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

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

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. Спасибо!

Ответ 1

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

  • Сохраните следующий script как sendMessage.applescript (Примечание: обязательно выберите опцию Текст).
  • Выполните его, выполнив: osascript sendMessage.applescript 1235551234 "Hello there!".
  • Это отправит iMessage на номер телефона 123-555-1234, содержащий текст "Hello there!".

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

Ответ 2

Насколько я понимаю, вы не можете начать новый разговор через 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:[email protected]"
end tell

Ответ 3

Этот script отправит сообщение каждые 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

Ответ 4

tell application "Messages"
    set myid to get id of first service
    set theBuddy to buddy "[email protected]" of service id myid
    send "Washer Done!" to theBuddy
end tell

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

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

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

Ответ 5

Примеры:

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, поэтому, когда я запускаю "получить имя службы", я получаю для этой службы строку типа

"E: [email protected]"

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

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

Ответ 6

Хорошо, я просто сделал следующее в действии 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