Как отправить текст imessage с applescript, только в предоставленном сервисе?

может ли кто-нибудь показать мне, как отправить сообщение непосредственно пользователю iMessage через приложение Messages?

tell application "Messages"
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 1
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 2
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 3

    send "Message" to buddy "mail of name" of service x
end tell

Мне нужно отправить сообщение на аккаунт только через iMessage, а не через Google talk, AIM, bonjour. Спасибо!

6 ответов


вместо того, чтобы жестко кодировать службу iMessage, вы можете найти его автоматически:

  1. сохраните следующий скрипт sendMessage.applescript (Примечание: обязательно выберите текст).
  2. выполнить командой: osascript sendMessage.applescript 1235551234 "Hello there!".
  3. это отправит iMessage на номер телефона 123-555-1234, содержащий текст " Привет!".

метод SendMessage.помощью AppleScript:

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

насколько я понимаю, вы не можете начать новый разговор через AppleScript. Таким образом, приятель и Служба должны соответствовать друг другу и должны иметь постоянный разговор.

Если у вас есть имя приятеля, вы можете сделать следующее

tell application "Messages"
    get name of service of buddy "Buddy Name"
end tell

это вернет имя службы, которое соответствует приятелю. Конечно, вы также можете использовать идентификатор службы. Но мне нравится это имя.

в конце концов вы сможете отправить сообщение с

tell application "Messages"
    send "Text of Message" to buddy "+43 555 XXXXXXX" of service "E:example@mac.com"
end tell

этот скрипт будет отправлять сообщение каждые 10~30 секунд

tell application "Messages"

    set targetBuddy to "+12025551234"
    set targetService to id of 1st service whose service type = iMessage

    repeat

        set textMessage to "Hi there!"

        set theBuddy to buddy targetBuddy of service id targetService
        send textMessage to theBuddy

        delay (random number from 10 to 30)

    end repeat

end tell

примеры:

get services
get name of services
get buddies
get name of buddies 

ваши строки:

send "Test-Message" to buddy "buddy" of service "service"

Кажется, работает, если" buddy "и" service " действительны.

у меня есть iMessage с моим Apple-ID, поэтому, когда я выполняю "get name of services", я получаю для этой службы строку типа

"E:myAppleID@host.com"

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

надеюсь, что это работает!


tell application "Messages"
    set myid to get id of first service
    set theBuddy to buddy "mybuddy@me.com" of service id myid
    send "Washer Done!" to theBuddy
end tell

У меня был тот же вопрос и после некоторых поисков я нашел ответ. Для того, чтобы" первая услуга " была iMessage, вам нужно будет зайти в учетные записи iMessage Preferences и повторно заказать учетную запись iMessage, чтобы быть первой. После этого это работает как шарм.

Это также запустит разговор, если его не существует.

надеюсь, что это поможет!


Ok, Я только что сделал следующее в действие Automator, которое захватывает полное имя зарегистрированных пользователей, находит соответствующий номер iPhone из контактов, имя службы и, наконец, отправляет входящий текст (из предыдущего действия)...я сам на iMessage. Не очень полезно, по крайней мере для меня на данный момент, но я доказал, что это возможно :)

set input to "Testing 123" **//This line is just for testing**
tell application "System Events"
    set MyName to get full name of current user
end tell
  tell application "Contacts"
      set myPhone to value of phone 1 of (person 1 whose name = MyName)   
      whose label = "iPhone"
   end tell
tell application "Messages"
    set MyService to get name of service of buddy MyName
    send input to buddy myPhone of service MyService
end tell