Как создать новое сообщение в iChat без отправки, используя Automator для захвата выделенного текста

Я пытаюсь создать службу, которая получает URL-адрес какой-либо ссылки, а затем создает пустой iMessage с этим URL-адресом в теле. По сути, я хочу воссоздать эту функцию обмена сообщениями в Safari в Mountain Lion, но, в частности, с Reeder.app. «Копировать ссылку» из контекстного меню не всегда работает, особенно. при отправке на iphone URL-адрес падает, и все, что вы получаете, это псевдоним.

Я настроил Automator с Applescript, и я определенно могу отправить сообщение приятелю, если это указано. Я бы предпочел заполнить это в iMessage, так как я не всегда буду отправлять одному и тому же человеку.

Ниже работает, используя набор входных данных в качестве прокси для захвата URL-адреса автомата в данный момент.

set input to "http://aol.com"
tell application "Messages"
          set theBuddy to buddy "camelot@mac.com" of service "iCloud"
          send input to theBuddy
end tell

Также пробовал

tell application "Messages"
    set theBuddy to buddy "*" of service "iCloud"
    set input to invitation message of text chat of service "iCloud"
end tell

Оба из https://discussions.apple.com/thread/3923965?start=0&tstart=0

Интересно, что в качестве обходного пути, используя двух приятелей, почти всегда использующих «отправить ввод на «buddy@me.com»», я получаю работающий сервис. он доступен в Safari для URL-адреса, но недоступен в Reeder.app как сервис для чего бы то ни было. Он не отображается в контекстном меню, не отображается в Reeder > Services. Странный. Это проблема Ридера? Я заметил, что мой сервис находится в категории «Интернет» в Диспетчере служб… Я бы предпочел иметь пустой iMessage с URL-адресом в тексте, чтобы я мог внести изменения, если захочу.

Ответы (1)

Вы должны сделать это с помощью сценариев пользовательского интерфейса:

tell application "System Events" to tell process "Messages"
    set input to "http://aol.com" as text
    click button 1 of group 1 of splitter group 1 of window 1
    delay 1
    keystroke "Buddy@provider.com" -- type the reciever
    keystroke return -- validate the previous input
    keystroke tab -- move to message input
    keystroke input -- type the message
end tell