2013-03-06 66 views
3

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

为什么会发生这种情况?

+0

这是我们无法确定的某些平台的已知问题。你可以打开Skype4Py Python调试日志记录,看看你的应用程序是否收到消息,并且它不会在X11/dbus路由中丢失? – 2013-03-07 16:07:11

回答

2

没有解决办法,但我进一步调查了一下,因为我问自己同样的问题。当您的应用程序中看到messageStatusChanged丢失时,您可以使用dbus-monitor来查看传入消息是否通过dbus发送了信号。

$ dbus-monitor "interface=com.Skype.API.Client" 

我的印象是,如果有很多来自Skype的“沉寂”一段较长时间的第一状态改变经常去错过。

具体地,“第一”的消息显示在DBUS监视器此图案(是的,成对的,不知道这是为什么):

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" 

消息上方不会触发messageStatusChanged但在下一个确实(再次在对):

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" 

在第二个例子,它不仅示出了从thesenderthereceiver一个CHAT但它实际上示出了CHATMESSAGE与串行3535369STATUS已经是RECEIVED。只有后者似乎触发messageStatusChanged

问题是:第一条消息是否应该创建CHATMESSAGE {serial} STATUS RECEIVED?如果是:这是Skype客户端中的错误吗?如果不是:如果CHATMESSAGE仅在更新已建立的聊天的情况下才会发送,您是否应该听取其他事件?

我还不知道答案,但也许这有助于。

+0

我认为正确的地方解决这个问题将是Skype发展论坛。他们不支持Skype4Py,但他们可以回答一般的Skype API问题。由于Skype是黑匣子,除非Skype自己回应,否则我们只能在这里进行猜测。 – 2013-03-08 02:26:49

相关问题