iMessage-Can’的AppleScript中出错;无法获取文本聊天id的服务
我得到错误:无法获得文本聊天id“iMessage;-;”的服务。(-1728)-尝试向mac上的另一个imessage客户端发送文本时(不同用户)。以下是失败的代码片段:iMessage-Can’的AppleScript中出错;无法获取文本聊天id的服务,applescript,imessage,Applescript,Imessage,我得到错误:无法获得文本聊天id“iMessage;-;”的服务。(-1728)-尝试向mac上的另一个imessage客户端发送文本时(不同用户)。以下是失败的代码片段: using terms from application "Messages" on message received theText from theBuddy for theChat # get what we need set recvService to name of ser
using terms from application "Messages"
on message received theText from theBuddy for theChat
# get what we need
set recvService to name of service of theChat
Thx.更新:如下所述,观察到的行为是一个bug。但是,OP自己找到了一个解决办法:接收到的
消息的事件(theBuddy
在示例代码中)的from
参数是Buddy
类的一个实例,该类还具有一个服务
属性,该属性可以正确运行:
将recvService设置为buddy的服务名称,而不是chat的buggy``
注意:接收到的消息事件的for
参数(OP代码中的chat
)是文本聊天
类的一个实例,该类继承自聊天
基类。如果脚本编辑器中的字典查看器未配置为显示继承的项,那么通过查看文本聊天
类,就不会明显看出它确实有一个-当前有缺陷的服务
属性。要使继承的项目可见,请打开脚本编辑器的“首选项”对话框并选中“显示继承的项目”
在AppleScript对消息的支持中似乎有一个bug
(在OSX 10.11.1上观察到);我建议你把一个bug归档在;下面是一个简单的演示:
告诉应用程序“消息”
将svc设置为第一项服务
将cht设置为的第一项(svc的聊天)
# !! 中断,即使它应该返回与“svc”相同的对象。
#“无法获取文本聊天id服务\”iMessage;-\"."
红隧服务
结束语
似乎试图访问文本聊天
实例的任何属性当前已被破坏
您可以尝试解决方法:
#给定聊天实例,返回其原始服务。
关于getService(cht)
本地静止轨道交通
告诉应用程序“消息”
对服务中的svc重复此操作
尝试
(svc的第一次聊天,其为cht)
svc的返回内容
结束尝试
结束重复
结束语
返回缺少的值
结束服务
#示例调用
将recvService设置为(my getService(theChat))的名称
好的,只是一个更新,也许还有一个解释(?):
在查看messages.app字典时,似乎没有聊天的“服务”,但有好友的“服务”
我刚开始在El Capitan编写脚本,所以我不知道这是一个变化还是一个bug。我将把这留给更有经验的人来评论
因为我可以从“好友”那里得到服务,所以我不需要mklement0的回答(但我非常感谢您的回答),所以我将暂时保持现状。很高兴您找到了解决办法。text chat
类(代码中的chat
就是其中的一个实例)确实有一个服务
属性,它从祖先的chat
类继承。通常,除非在字典查看器的“首选项”对话框中选中“显示继承项”
,否则在字典查看器中不会看到继承项。所以你最初的问题是一个bug。如果没有这样的属性,您将看到不同的错误消息(无法将…转换为类型说明符
)。我已经用您的发现和我的评论更新了我的答案。顺便说一句,如果你想让我收到回复,你必须对我的回答发表评论。
set recvService to name of service of theChat - fails.
set recvService to name of service of theBuddy - works.