Решение не было, но я исследовал это немного дальше, потому что задаю себе тот же вопрос. Вы можете использовать dbus-монитор, чтобы увидеть, было ли сообщение о передаче по dbus, когда вы видите messageStatusChanged
в вашем приложении.
$ 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"
во втором примере он не только показывает CHAT
от thesender
к thereceiver
но это на самом деле показывает, что CHATMESSAGE
с серийным 3535369
и STATUS
был RECEIVED
. Только последний, кажется, вызывает messageStatusChanged
.
Вопрос: Является первым сообщением, которое должно создать CHATMESSAGE {serial} STATUS RECEIVED
? Если да: это ошибка в клиенте Skype? Если нет: если CHATMESSAGE
отправляется только в случае обновления в установленный чат, вы должны слушать другое событие?
Я еще не знаю ответа, но, возможно, это помогает.
Это известная проблема для некоторых платформ, которые нам не удалось установить. Можете ли вы включить ведение журнала отладки Skype4Py Python и посмотреть, действительно ли ваше приложение получает сообщения, и оно не потеряно в маршрутизации X11/dbus? –