我找到了一个从命令行发送消息的脚本,但它不能使用名称中间距和大小写的群组聊天工作。
#!/bin/sh
recipient="${1}"
message="${*:2}"
echo "$recipient"
cat<<EOF | osascript - "${recipient}" "${message}"
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
EOF
当我运行./sendmessage "GROUP CHAT" "test"
时,它给了我
228:261: execution error: Messages got an error: Can’t get buddy id "7087805D-ED73-4DB9-81AB-7C964B98AB34:group chat". (-1728)
答案 0 :(得分:0)
不幸的是,使用聊天的名称无法使用applescript向群组聊天发送消息。要发送到现有的群聊,您需要获取聊天的内部指南。有两种方法可以做到这一点。
从位于~/Library/Messages/chat.db
磁盘上的messages.app内部数据库中提取它。它是聊天表下的guid列。如果您将群组聊天命名,则可以通过display_name轻松找到。
当有人在该聊天中发帖时,您可以使用带有on chat room message received
处理程序的消息的AppleScript处理程序来捕获ID。
一旦你有了guid(应采用类似于iMessage;+;chat831551415676550949
的格式),你的脚本可以修改为发送到ID:
#!/bin/sh
recipient="${1}"
message="${*:2}"
echo "$recipient"
cat<<EOF | osascript - "${recipient}" "${message}"
on run {targetChatID, targetMessage}
tell application "Messages"
set targetChat to a reference to text chat id targetChatID
send targetMessage to targetChat
end tell
end run
EOF
要发送图像而不是文本,请将targetMessage替换为:
set ImageAttachment to POSIX file "File path here" as alias