How to send an imessage text with applescript, only in provided service?

匿名 (未验证) 提交于 2019-12-03 02:44:02

问题:

Can somebody show me how to send a message directly to the user of iMessage via Messages app?

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 

I need to send a message to an account only via iMessage, not via google talk, AIM, bonjour. Thank you!

回答1:

Instead of having to hard-code the iMessage service, you can find it automatically:

  1. Save the following script as sendMessage.applescript (Note: make sure to choose the Text option).
  2. Execute it by running: osascript sendMessage.applescript 1235551234 "Hello there!".
  3. This will send an iMessage to the phone number 123-555-1234 containing the text "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:

As far as I do understand it you cannot start a new conversation via AppleScript. Thus the Buddy and the service must fit together and must have an ongoing conversation.

If you have the name of the buddy you could do the following

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

This will return the service name that fits to the buddy. Of course you could also use the the service id. But I like to use the name.

In the end you will be able to send a message with

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


回答3:

This script will send a message every 10~30 seconds

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 "mybuddy@me.com" of service id myid     send "Washer Done!" to theBuddy end tell 

I had the same question and after some searching I found the answer. In order for the "first service" to be iMessage you will need to go into iMessage Preferences Accounts and re-order the iMessage account to be the first one. After that this works like a charm.

This will also start a conversation if there is not one existing.

Hope that helps!



回答5:

Examples:

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

Your line:

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

seems to work if "buddy" and "service" is valid.

I have my iMessage with my Apple-ID registered, so when I execute "get name of services" I get for this service a string like

"E:myAppleID@host.com"

which I can use for "service". Buddy is just the name of your buddy, also as pure text. See "get name of buddies".

Hope it works!



回答6:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!