Как начать новый разговор в imessage с помощью applescript

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

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

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

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

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

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