Messages.app AppleScript-Handler Überschreibt das 10-Sekunden-Skript-Timeout

Ich habe einen funktionierenden Messages.app Applescript-Handler. Die meisten Handler sind leer, mit Ausnahme des Handlers "bei Nachricht empfangen". Dieser Handler führt ein Shell-Skript aus, das mit Ausgaben antwortet, von denen erwartet wird, dass sie als Antworten an den Absender der Nachricht gesendet werden.

Das Problem: Mein Skript dauert zwischen 6 und 12 Sekunden. In den Fällen, in denen es länger als 10 Sekunden dauert, scheint Messages ein standardmäßiges Applescript-Handler-Timeout von 10 Sekunden zu haben. Nach 10 Sekunden wird ein Popup angezeigt und Messages wird unbrauchbar, bis die Schaltfläche „Warten“ gedrückt wird. Beim Drücken des Knopfes beendet der Handler und alles ist gut.

Applescript Timeout-Warnung

Mögliche Lösungen:

  • Ideal: Deaktivieren/ändern Sie das Timeout für Applescript-Nachrichten.
  • Sorgen Sie dafür, dass das Handler-Skript genügend Informationen übergibt, um auf dieselbe Nachricht zu antworten, und zwar an das Skript, das unter ausgeführt wird, nohupoder $ [script] &lassen Sie das Skript dann sein eigenes Applescript starten, um zu antworten.
  • Lassen Sie Applescript versuchen, in Nachrichten auf die Schaltfläche "Warten" zu klicken, bevor Sie antworten (nicht sicher, ob dies funktionieren würde).

Vielen Dank für jede Hilfe!

Antworten (1)

Leider hat Apple es uns nicht leicht gemacht. Sie haben keine Möglichkeit bereitgestellt, dieses Timeout zu ändern, und manchmal dauert die Ausführung des Skripts selbst zu lange (weil Messages.app schlecht darin ist, Skripts auszuführen). Ich führe selbst einen ziemlich umfangreichen Applescript-Handler aus und interagiere mit Messages.app über AppleScripts, die von anderen Prozessen ausgeführt werden. Manchmal flippen die Dinge aus und ich bin nicht da, um es zu reparieren. Die Problemumgehung, die ich mir ausgedacht habe, besteht darin, mit der Schaltfläche "Warten" nach einem Fenster zu suchen und darauf zu klicken. Manchmal werden meine Skripte jedoch direkt nacheinander ausgeführt, und am Ende stehen möglicherweise Dutzende von Fenstern wie der Screenshot, den Sie eingefügt haben. In meinem Fall ist es einfacher, Messages zum Beenden zu zwingen und es dann erneut zu öffnen. Ich habe ein kleines AppleScript geschrieben, das genau das tut. Sie können es als Anwendung mit "stay open after run handler" kompilieren. ausgewählt und es wird immer sichergestellt, dass Messages funktioniert und ohne Fehlerfenster geöffnet wird. Sie finden es hier:https://github.com/davidnewhall/IndigoAppleScripts/blob/master/Restart_Messages.applescript

Die andere Option, die Sie (einfach) entwickeln könnten, besteht darin, Ihr Skript im Hintergrund auszuführen und zu reagieren, sobald die Daten verfügbar sind. das ist wahrscheinlich ein besserer Ansatz. Sie können osascriptAppleScript über die Befehlszeile (oder ein Skript) ausführen. Es gibt viele Beispiele in meinem Github-Repo, wie man Nachrichten extern senden kann.

Viel Glück!