Как начать новый разговор в iMessage, используя AppleScript?

Итак, я работаю над созданием applescript, который по существу автоматизирует отправку сообщения. Сейчас я работаю:

on run {msg, phoneNum}
    tell application "Messages"
        set serviceID to id of 1st service whose service type = iMessage
        send msg to buddy phoneNum of service id serviceID
    end tell
end run

Это работает по большей части, за исключением того, что он не работает при запуске нового сеанса. Когда вы запускаете script на номер, с которым в сообщениях не ведется беседа, появляется всплывающее предупреждение о том, что "у вашего сообщения нет получателей". Однако это создает разговор с этим человеком, и когда вы снова запускаете тот же script, он работает.

Я решил, что если он работает во второй раз, должен быть способ создать новый разговор, но я никогда не использовал яблоки или действительно какие-либо языки script, поэтому я не уверен, как это сделать.

Изменить: сразу после публикации я думал о грубом обходном пути. Если перед отправкой сообщения вы отправляете пустую строку, вы можете создать новый диалог и работать с уже существующим разговором.

on run {msg, phoneNum}
    tell application "Messages"
        set serviceID to id of 1st service whose service type = iMessage
        send "" to buddy phoneNum of service id serviceID
        send msg to buddy phoneNum of service id serviceID
    end tell
end run

Пока это работает, я бы предположил, что есть лучшее/более элегантное решение, чем этот.

Ответ 1

Есть много способов сделать это.

Первый пример:

on run {targetBuddyPhone, targetMessage}
    tell application "Messages"
        set targetService to 1st service whose service type = iMessage
        set targetBuddy to buddy targetBuddyPhone of targetService
        send targetMessage to targetBuddy
    end tell
end run

Второй пример:

tell application "Messages"
    set targetBuddy to "+18001234567"
    set targetService to id of 1st service whose service type = iMessage
    repeat
        set textMessage to "Hello pal!"
        set theBuddy to buddy targetBuddy of service id targetService
        send textMessage to theBuddy
        delay (random number from 10 to 30)
    end repeat
end tell

Ответ 2

Кто-нибудь нашел решение для этого? У меня есть простой AppleScript, который работает, но не работает, когда приходится начинать новый разговор в сообщениях.

Ответ 3

Мое решение состоит в том, чтобы сказать Applescript нажать "Command + N", что является клавишей "Начать новый разговор".

activate application "Messages"
   tell application "System Events" to tell process "Messages"
   key code 45 using command down           -- press Command + N to start a new window
   keystroke "<replace with phone number>"  -- input the phone number
   key code 36                              -- press Enter to focus on the message area 
   keystroke "<replace with message>"       -- type some message
   key code 36                              -- press Enter to send
end tell

Этот скрипт начнет новый разговор и отправит сообщение на номер телефона через iMessage