messages - AppleScript send image on macOS 12 - applescript

So I have this AppleScript
set filePath to (path to desktop as text) & "photo.png"
tell application "Messages"
set targetService to 1st account whose service type = iMessage
set targetBuddy to participant "+18005555555" of targetService
send file filePath to targetBuddy
end tell
worked before but in macOS 12 it looks like it's working (see the progress bar) but eventually timesout and states it can't be sent.
Is there an update to sending this?

Related

How to send a URL with thumbnail in imessage text with applescript

I am trying to send a url with a thumbnail in applescript like this:
on run {targetBuddyPhone, targetMessage}
tell application "Messages"
set targetService to 1st service whose service type = iMessage
set targetBuddy to buddy targetBuddyPhone of targetService
send "Check out my video https://www.example.com" to targetBuddy
end tell
end run
The problem is that link is not clickable. How do I enter a url so that a thumbnail shows up like when a link is sent in a typical iMessage.

How to set sender in Outlook POP account using AppleScript?

This script selects my main account and the signature related to it.
tell application "Microsoft Outlook"
set theContent to "Mail Content etc."
set theMessage to make new outgoing message with properties {subject:(("Month ") & (do shell script "date '+%m'")), content:theContent}
make new recipient with properties {email address:{address:"to#mail.com"}} at end of to recipients of theMessage
make new recipient with properties {email address:{address:"to#mail.com"}} at end of cc recipients of theMessage
open theMessage
end tell
I would like to add a line that picks one of several POP accounts to send from.
Ideally the resulting mail has the signature stored under that address.

choosing mail account in applescript

I'd like to send a mail using a Mac Automator action. I prepared the following mail script:
set recipientName to "<recipient>"
set recipientAddress to "<recipient mail address>"
set theSubject to "<mail subject>"
set textBody to "<text>"
tell application "Mail"
set theMessage to make new outgoing message with properties {subject:theSubject, content:textBody, visible:true}
--set recipient
tell theMessage
make new to recipient with properties {name:recipientName, address:recipientAddress}
--send the message
send
end tell
end tell
now when I send this it uses the Account that is basically currently selected (highlighted) in the Mail App.
Is there any way to choose a specific account?
You need to set the sender of theMessage to a valid address of one of your accounts.
e.g.
set recipientName to "<recipient>"
set recipientAddress to "<recipient mail address>"
set theSubject to "<mail subject>"
set textBody to "<text>"
set theSender to "dragon5689#stackoverflow.com" -- your valid account email here
tell application "Mail"
set theMessage to make new outgoing message with properties {subject:theSubject, content:textBody, visible:true, sender:theSender}
tell theMessage
make new to recipient with properties {name:recipientName, address:recipientAddress}
send
end tell
end tell

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

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!
Instead of having to hard-code the iMessage service, you can find it automatically:
Save the following script as sendMessage.applescript (Note: make sure to choose the Text option).
Execute it by running: osascript sendMessage.applescript 1235551234 "Hello there!".
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
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
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
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!
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!
Ok, I just made the following into an Automator action which grabs the logged in userĀ“s full name, finds the matching iPhone number from Contacts, the service name, and lastly it sends the incoming text (from the previous action) to...myself on iMessage. Not very useful, at least to me at the moment, but I proved it to be possible in a way :)
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

Get contents of iChat message via Applescript

I'll preface this with the fact that I'm new to applescript...
I have iChat set up to run this script whenever a new message is received:
using terms from application "iChat"
on message received theMessage from theBuddy for theChat
set theHandle to handle of theBuddy
tell application "MyApp"
receivedInstantMessage from theHandle message theMessage
end tell
end message received
end using terms from
This works as expected an MyApp (which I'm coding) receives two strings (the handle of the buddy and the message content). The only trouble is that this script only seems to work once at least one message has been received in iChat. I.e the script seems to only work from the second message onwards. If the buddy logs out, he'll have to send two messages again before my app receives the AppleEvent.
Am I making a basic mistake here?
The first message is actually a "text invitation" so your notification script will need another handler:
on received text invitation theMessage from theBuddy for theChat
-- your tell app statement goes here
end received text invitation

Resources