Messages.app Manejador de AppleScript Anula el tiempo de espera del script de 10 segundos

Tengo un controlador Applescript Messages.app en funcionamiento. La mayoría de los controladores están vacíos, excepto el controlador "sobre el mensaje recibido". Este controlador ejecuta un script de shell que responde con resultados que se espera que se envíen como respuestas al remitente del mensaje.

El problema: My Script tarda entre 6 y 12 segundos. En los casos en que tarda más de 10 segundos, Mensajes parece tener un tiempo de espera del controlador de Applescript predeterminado de 10 segundos. Después de 10 segundos, aparece una ventana emergente y Mensajes se vuelve inutilizable hasta que se presiona el botón "Esperar". Al presionar el botón, el controlador termina y todo está bien.

Alerta de tiempo de espera de Applescript

Soluciones posibles:

  • Ideal: deshabilitar/cambiar el tiempo de espera de los mensajes de Applescript.
  • Haga que el script del controlador pase suficiente información para responder al mismo mensaje en el script que se ejecuta nohupo $ [script] &luego haga que el script inicie su propio Applescript para responder.
  • haga que Applescript intente hacer clic en el botón "Esperar" en los mensajes antes de responder (no estoy seguro de si esto funcionaría).

¡Gracias por cualquier ayuda!

Respuestas (1)

Desafortunadamente, Apple no nos lo ha puesto fácil. No han proporcionado ninguna forma de cambiar este tiempo de espera y, a veces, es el propio script el que tarda demasiado en ejecutarse (porque Messages.app es terrible para ejecutar scripts). Yo mismo ejecuto un controlador AppleScript bastante extenso e interactúo con Messages.app a través de AppleScripts ejecutados por otros procesos. A veces las cosas se vuelven locas y no estoy cerca para arreglarlo. La solución alternativa que se me ocurrió es buscar una ventana con el botón "Esperar" y hacer clic en ella. Sin embargo, a veces, mis scripts se ejecutan inmediatamente después de otro y termino con posiblemente docenas de ventanas como la captura de pantalla que pegaste. En mi caso, es más fácil forzar el cierre de Mensajes y luego volver a abrirlo. Escribí un pequeño AppleScript que hace exactamente esto. Puede compilarlo como una aplicación con "permanecer abierto después de ejecutar el controlador" seleccionado y siempre se asegurará de que Mensajes funcione y se abra sin ventanas de error. Lo puedes encontrar aquí:https://github.com/davidnewhall/IndigoAppleScripts/blob/master/Restart_Messages.applescript

La otra opción que podría (fácilmente) desarrollar es ejecutar su script en segundo plano y responder una vez que los datos estén disponibles; ese es probablemente un mejor enfoque. Puede ejecutar osascriptdesde la línea de comandos (o un script) para ejecutar un AppleScript. Hay muchos ejemplos en mi repositorio de github de cómo enviar mensajes externamente.

¡Buena suerte!