Python Skype4Py:messageStatusChanged不总是调用
我有一个Skype机器人连接到X(Linux)中的一个工作Skype实例。问题在于,传入消息时并不总是触发messageStatusChanged事件。在大多数情况下确实如此,但有时信息只是“丢失”。我可以看到它们出现在Skype客户端中,但是Skype4Py的事件由于某种原因没有被触发。这些消息所包含的内容没有任何区别Python Skype4Py:messageStatusChanged不总是调用,python,skype,skype4py,Python,Skype,Skype4py,我有一个Skype机器人连接到X(Linux)中的一个工作Skype实例。问题在于,传入消息时并不总是触发messageStatusChanged事件。在大多数情况下确实如此,但有时信息只是“丢失”。我可以看到它们出现在Skype客户端中,但是Skype4Py的事件由于某种原因没有被触发。这些消息所包含的内容没有任何区别 为什么会发生这种情况?没有解决方案,但我进一步研究了这个问题,因为我问自己同样的问题。当您在应用程序中看到messageStatusChangedmissing时,可以使用db
为什么会发生这种情况?没有解决方案,但我进一步研究了这个问题,因为我问自己同样的问题。当您在应用程序中看到
messageStatusChanged
missing时,可以使用dbus监视器查看传入消息是否已通过dbus发出信号
$ dbus-monitor "interface=com.Skype.API.Client"
我的印象是,如果Skype在较长一段时间内保持大量“沉默”,那么第一次状态更改通常会丢失
具体来说,“第一条”消息在dbus监视器中显示此模式(是的,成对显示,不确定原因):
上面的消息不会触发messageStatusChanged
,但下一条消息会触发(再次成对触发):
在第二个示例中,它不仅显示了从发送者到接收者的聊天
,而且实际显示了一条带有序列号3535369
和状态
的聊天信息
。只有后者似乎触发了messageStatusChanged
问题是:第一条消息是否应该创建一个CHATMESSAGE{serial}状态RECEIVED
?如果是:这是Skype客户端中的错误吗?如果否:如果仅在更新已建立的聊天记录时才发送CHATMESSAGE
,您是否应该监听其他事件
我还不知道答案,但也许这有帮助 这是我们尚未确定的一些平台的已知问题。你能打开Skype4Py Python调试日志记录,看看你的应用程序是否收到了消息,并且它没有在X11/dbus路由中丢失吗?我认为解决这个问题的正确地方应该是Skype开发论坛。他们不支持Skype4Py,但可以回答一般的SkypeAPI问题。因为Skype是黑匣子,除非Skype自己做出响应,否则我们只是在做猜测。
method call sender=:1.1036 -> dest=:1.1028 serial=5088 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696242"
method call sender=:1.1036 -> dest=:1.1232 serial=5089 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696242"
method call sender=:1.1036 -> dest=:1.1028 serial=5090 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696353"
method call sender=:1.1036 -> dest=:1.1232 serial=5091 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696353"
method call sender=:1.1036 -> dest=:1.1028 serial=5092 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHATMESSAGE 3535369 STATUS RECEIVED"
method call sender=:1.1036 -> dest=:1.1232 serial=5093 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
string "CHATMESSAGE 3535369 STATUS RECEIVED"