无法向群聊发送消息
Can't send message to group chat
我找到了一个从命令行发送消息的脚本,但它不能用于名称中包含空格和大写的群聊。
#!/bin/sh
recipient=""
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)
不幸的是,无法使用聊天名称向使用 applescript 的群聊发送消息。要发送到现有群聊,您需要获取聊天的内部 GUID。有两种方法可以做到这一点。
从位于磁盘 ~/Library/Messages/chat.db
的 messages.app 内部数据库中提取它。它是聊天 table 下的 guid 列。如果你有群聊命名,那么很容易找到 display_name.
您可以将消息的 AppleScript 处理程序与 on chat room message received
处理程序一起使用,以在有人在该聊天中发帖时捕获 ID。
获得 guid 后(格式应类似于 iMessage;+;chat831551415676550949
),您的脚本可以修改为发送到 ID:
#!/bin/sh
recipient=""
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
我找到了一个从命令行发送消息的脚本,但它不能用于名称中包含空格和大写的群聊。
#!/bin/sh
recipient=""
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)
不幸的是,无法使用聊天名称向使用 applescript 的群聊发送消息。要发送到现有群聊,您需要获取聊天的内部 GUID。有两种方法可以做到这一点。
从位于磁盘
~/Library/Messages/chat.db
的 messages.app 内部数据库中提取它。它是聊天 table 下的 guid 列。如果你有群聊命名,那么很容易找到 display_name.您可以将消息的 AppleScript 处理程序与
on chat room message received
处理程序一起使用,以在有人在该聊天中发帖时捕获 ID。
获得 guid 后(格式应类似于 iMessage;+;chat831551415676550949
),您的脚本可以修改为发送到 ID:
#!/bin/sh
recipient=""
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