iMessage from Terminal
github.com
github.com
They're formulaic, so you can come up with valid ones that aren't your own, but good luck doing that in a way that scales well and doesn't run your app afoul of the DMCA.
if is_i response puts "Sending \'#{str}\' to chat number #{response}" `osascript -e 'tell application "Messages" to send \"#{str}\" to item #{response.to_i} of text chats'` else puts "Sending \'#{str}\' to buddy \'#{response}\'" `osascript -e 'tell application "Messages" to send \"#{str}\" to buddy \"#{response}\"'` end
Though I must say I kinda like the way they've done it in OS X 10.9, where I can respond inline even when I'm on another desktop.
The best thing about this is probably that you can send messages when you're logged in to your OSX box remotely. Though for that to be handy it misses a real "chat" feature, in which the app can also playback the messages you've received.
Turns out it's quite easy to get around, here's a gist that allows to you make a nice mini-commandline app: https://gist.github.com/aktau/8958054
(reproduced here):
#!/bin/sh
exec <"$0" || exit; read v; read v; exec /usr/bin/osascript - "$@"; exit
-- taken from:
-- http://stackoverflow.com/questions/11812184/how-to-send-an-imessage-text-with-applescript-only-in-provided-service
-- thanks to users @Senseful and @DigiLord
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
Now I can do: $ imessage XXXXXXXXXX "gofinance: stock AAPL went up, possibly because of imessage..."
Where XXXXXXXXXX is my own number.There are some other cool hacks with this, among others is a Lisp REPL with iMessage: https://46b.it/2012/hacking-with-imessage.
It should at least be doing something like this: http://porkrind.org/missives/calling-applescript-from-ruby/
I included two issues to increase the usage docs as well as the ordering of the conversation list.