解決策はありませんが、同じ質問を自問しているため、これをもう少し調査しました。messageStatusChanged
dbus-monitor を使用して、アプリケーションに欠落がある場合に、着信メッセージが dbus 経由で通知されたかどうかを確認できます。
$ dbus-monitor "interface=com.Skype.API.Client"
Skype からの「無音」が長時間続くと、最初のステータス変更が失われることが多いという印象があります。
具体的には、「最初の」メッセージは dbus-monitor でこのパターンを示します (はい、ペアで、理由はわかりません)。
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"
2 番目の例では、CHAT
from thesender
tothereceiver
が表示されるだけでなく、実際にはCHATMESSAGE
、シリアル番号3535369
とSTATUS
has been が含まれていることも示されRECEIVED
ます。後者のみがトリガーされるようmessageStatusChanged
です。
問題は、最初のメッセージが を作成することになっているCHATMESSAGE {serial} STATUS RECEIVED
かどうかです。はいの場合: これは Skype クライアントのバグですか? いいえの場合:CHATMESSAGE
が確立されたチャットの更新の場合にのみ送信される場合、別のイベントをリッスンする必要がありますか?
答えはまだわかりませんが、これが役立つかもしれません。