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.
Mögliche Lösungen:
nohup
oder $ [script] &
lassen Sie das Skript dann sein eigenes Applescript starten, um zu antworten.Vielen Dank für jede Hilfe!
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 osascript
AppleScript ü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!