Попытка получить сообщение от OS X сообщения с AppleScript
Эй, я запускаю следующий скрипт:
using terms from application "Messages"
on message received this_message from this_buddy for this_chat
display dialog "test"
end message received
end using terms from
Но я получаю следующую ошибку каждый раз в сообщениях, когда я получаю сообщение:
Event: Message Received in Active Chat
File: registerToReceiveMessages.applescript
Error: Error -1708
Я не могу найти эту ошибку в Интернете. Кажется, работает для любого чата, кроме активного чата. Есть идеи?
Также я пытаюсь добавить события для "адресованного сообщения получено", но каждый раз, когда я компилирую applecript, заменяет его на "полученное приглашение для совместного использования экрана"
2 ответа
Вы получите ошибку -1708 всякий раз, когда вы выбрали AppleScript, который не обрабатывает указанное событие.
Например, если ваш скрипт реализован только on message sent
, но вы устанавливаете этот скрипт для запуска каждый раз, когда вы получаете сообщение, вы получите ошибку -1708. Это потому, что ваш скрипт знает только, как обрабатывать исходящие, а не входящие сообщения, поэтому ошибка -1708.
Теперь вот что-то интересное...
Если вы пытаетесь использовать скрипт по умолчанию Mix Message Case.applescript
для событий Message Received
, Message Received in Active Chat
, а также Message Sent
, Первый и последний работают нормально, но вы получите ошибку -1708 для активного события чата. Мы можем сделать вывод, что это означает, что скрипт не обрабатывает событие Message Received in Active Chat
, И поэтому кажется, что даже Apple не может справиться с этим событием прямо сейчас.
Обновление OS X Mavericks:
Это обновление исправляет ранее упомянутую ошибку. Если вы выберете образец скрипта Apple Speak Events.applescript, вы заметите, что он безошибочно обрабатывает сообщения, полученные в активном чате. Если вы изучите код, вы заметите, что он использует on active chat message received
метод. Теперь мы можем использовать это в наших скриптах. Поскольку у меня больше не установлена старая версия, я не могу проверить, работает ли этот же метод в предыдущей версии.
Вот код из Speak Events.applescript:
on active chat message received with eventDescription
say eventDescription
end active chat message received
Также обратите внимание, как вы больше не указываете отдельные сценарии, которые будут выполняться для определенных событий. Вместо этого вы указываете один обработчик сценария для сообщений. Это означает, что вы должны реализовать все события, чтобы избежать получения методов -1708. Обратите внимание, что в примерах сценариев у Apple даже есть комментарий # The following are unused but need to be defined to avoid an error
, Вот шаблон, который можно использовать в качестве отправной точки для скриптов:
using terms from application "Messages"
# The following are unused but need to be defined to avoid an error
on message sent theMessage with eventDescription
end message sent
on message received theMessage with eventDescription
end message received
on chat room message received with eventDescription
end chat room message received
on active chat message received with eventDescription
end active chat message received
on addressed message received theMessage from theBuddy for theChat with eventDescription
end addressed message received
on received text invitation with eventDescription
end received text invitation
on received audio invitation theText from theBuddy for theChat with eventDescription
end received audio invitation
on received video invitation theText from theBuddy for theChat with eventDescription
end received video invitation
on received local screen sharing invitation from theBuddy for theChat with eventDescription
end received local screen sharing invitation
on buddy authorization requested with eventDescription
end buddy authorization requested
on addressed chat room message received with eventDescription
end addressed chat room message received
on received remote screen sharing invitation with eventDescription
end received remote screen sharing invitation
on login finished with eventDescription
end login finished
on logout finished with eventDescription
end logout finished
on buddy became available with eventDescription
end buddy became available
on buddy became unavailable with eventDescription
end buddy became unavailable
on received file transfer invitation theFileTransfer with eventDescription
end received file transfer invitation
on av chat started with eventDescription
end av chat started
on av chat ended with eventDescription
end av chat ended
on completed file transfer with eventDescription
end completed file transfer
end using terms from
Если вы начнете с этого скрипта и реализуете только те методы, которые вам нужны (оставляя остальные нетронутыми), вам следует избегать всех ошибок -1708.
Я смотрю на меня как message received
Обработчик событий работает только тогда, когда он чувствует себя в сообщениях. У меня была такая же проблема с немного другим скриптом. Найдя другой пример на другом веб-сайте, скопируйте его в новое окно редактора AppleScript и сохраните в файле AppleScript, скопированном в ~/Library/Scripts/Messages
По сообщениям, он начал работать.
Кажется, нет проблем с вашим сценарием. Если я заменю свой текущий скрипт вашим кодом и сохраню сценарий, он будет работать, как и ожидалось, с отображением диалогового окна с текстом test
,
Также может быть достаточно просто установить скрипт для запуска None
и вернемся к сценарию, который вы создали в настройках сообщений.