Python Skype4Py:messageStatusChanged不总是调用

Python Skype4Py:messageStatusChanged不总是调用,python,skype,skype4py,Python,Skype,Skype4py,我有一个Skype机器人连接到X(Linux)中的一个工作Skype实例。问题在于,传入消息时并不总是触发messageStatusChanged事件。在大多数情况下确实如此,但有时信息只是“丢失”。我可以看到它们出现在Skype客户端中,但是Skype4Py的事件由于某种原因没有被触发。这些消息所包含的内容没有任何区别 为什么会发生这种情况?没有解决方案,但我进一步研究了这个问题,因为我问自己同样的问题。当您在应用程序中看到messageStatusChangedmissing时,可以使用db

我有一个Skype机器人连接到X(Linux)中的一个工作Skype实例。问题在于,传入消息时并不总是触发messageStatusChanged事件。在大多数情况下确实如此,但有时信息只是“丢失”。我可以看到它们出现在Skype客户端中,但是Skype4Py的事件由于某种原因没有被触发。这些消息所包含的内容没有任何区别


为什么会发生这种情况?

没有解决方案,但我进一步研究了这个问题,因为我问自己同样的问题。当您在应用程序中看到
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"