Попытка получить сообщение от 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 и вернемся к сценарию, который вы создали в настройках сообщений.

Другие вопросы по тегам