Messages.app Обработчик AppleScript Переопределить 10-секундный тайм-аут сценария

У меня есть работающий обработчик Applescript Messages.app. Большинство обработчиков пусты, за исключением обработчика «при получении сообщения». Этот обработчик запускает сценарий оболочки, который отвечает выходными данными, которые, как ожидается, будут отправлены в качестве ответов отправителю сообщения.

Проблема: Мой сценарий занимает от 6 до 12 секунд. В тех случаях, когда это занимает более 10 секунд, в сообщениях, по-видимому, тайм-аут обработчика Applescript по умолчанию составляет 10 секунд. Через 10 секунд появляется всплывающее окно, и сообщения становятся непригодными для использования, пока не будет нажата кнопка «Подождать». По нажатию кнопки обработчик завершает работу, и все в порядке.

Оповещение о тайм-ауте Applescript

Возможные решения:

  • Идеальный вариант: отключить/изменить время ожидания сообщений Applescript.
  • Заставьте сценарий обработчика передавать достаточно информации, чтобы ответить на то же сообщение, в сценарий, работающий под управлением, nohupили $ [script] &затем запустите сценарий, чтобы ответить на свой собственный Applescript.
  • заставить Applescript пытаться нажать кнопку «Подождать» в сообщениях, прежде чем отвечать (не уверен, что это сработает).

Спасибо за любую помощь!

Ответы (1)

К сожалению, Apple не облегчила нам задачу. Они не предоставили возможности изменить этот тайм-аут, а иногда сам скрипт выполняется слишком долго (потому что Messages.app ужасно запускает скрипты). Я сам запускаю довольно обширный обработчик applescript и взаимодействую с Messages.app через AppleScripts, запускаемые другими процессами. Иногда что-то выходит из строя, и меня нет рядом, чтобы это исправить. Обходной путь, который я придумал, - проверить окно с помощью кнопки «Подождите» и щелкнуть ее. Однако иногда мои сценарии запускаются сразу за другим, и в итоге я получаю, возможно, десятки окон, как на скриншоте, который вы вставили. В моем случае проще принудительно закрыть Сообщения, а затем снова открыть их. Я написал небольшой AppleScript, который делает именно это. Вы можете скомпилировать его как приложение с «оставаться открытым после запуска обработчика». выбран, и он всегда будет следить за тем, чтобы сообщения работали и открывались без окон ошибок. Вы можете найти это здесь:https://github.com/davidnewhall/IndigoAppleScripts/blob/master/Restart_Messages.applescript

Другой вариант, который вы могли бы (легко) разработать, — запустить скрипт в фоновом режиме и ответить, как только данные будут доступны; это, вероятно, лучший подход. Вы можете запустить osascriptиз командной строки (или скрипта), чтобы запустить AppleScript. В моем репозитории на github есть множество примеров того, как отправлять сообщения извне.

Удачи!