0

Google トーク (別名 gchat) の連絡先が不在か、応対可能か、dnd、または使用不可かを判断したいと考えています (gchat での対応可能のタイプはこれらだけだと思います)。

これまでのところ、sleekxmpp を使用して gchat とやり取りしたり、xml を読んだりしています。優先度と可用性。だから私は誰が「最高の仲良し」であるかを判断したいと思います。つまり、彼らのサインオンしているリソースのどれを使用して、可用性を判断する必要があるかということです。

これは優先度レベルに大きく関係していると考えていますが、2 つのリソースが同じ優先度レベルと異なる可用性を持つことができるということから、その方法は正確にはわかりません。

「真の」空き状況を見つけるための完璧な解決策はないことは承知していますが、Google はアルゴリズムに基づいて、連絡先の横にある空き状況アイコンを表示する色を決定しているので、これを理解しようとすることができます。アウトも。

4

2 に答える 2

2

これは本当にあなた次第です。それに対する標準的な答えはありません (一般に、プロトコル仕様は、ユーザー インターフェイスの設計を指示することを避けようとします)。

インターフェイスに各接続を個別に表示するか、賢く試してそれらをマージすることができます。最終的にそれらをどのようにマージするかはあなた次第ですが、Robin の回答 (実際には正しい) に反して、ユーザーがその連絡先に送信するメッセージの受信者となる実際のリソースのステータスを反映するため、優先度を使用することをお勧めします

たとえば、連絡先に優先度 5 の 1 つのリソース「dnd」があり、別のリソースが優先度 0 の「不在」である場合、「不在」の方がより「利用可能な」状態であっても、「dnd」を表示するのは理にかなっています。 . これは、連絡先の裸の JID にメッセージを送信すると、連絡先がそれを「dnd」リソースに受信するためです。

優先度が同じ場合 (同じ優先度を持つ 2 つのリソース)、さらに別の選択肢があります。考えられる各ステータスに重みを付けて、「最も利用可能な」ステータスを表示することをお勧めします。たとえば、次のように注文します。

  1. チャット | dnd
  2. (なし - 標準の「使用可能」)
  3. あちらへ

これにより、「chat」と「dnd」のエッジ ケースが残ります。これらは両方とも、ユーザーの可用性に関する強力な (ただし相反する) ステートメント (つまり、「私に話してください!」と「どこかに行ってください!」) であるため、おそらく他のものよりも優先する必要があります。

実際、連絡先が「dnd」と「chat」の両方で同じ優先度を持つ 2 つのリソースを持っている場合、おそらく最後に受信したプレゼンスを優先することを除いて、それ以上できることはありません。で最近活動していました。

于 2012-05-16T02:33:25.210 に答える
1

まあ、すべての接続が利用できないと表示されている場合にのみ、利用できないと見なされるのではないでしょうか。利用可能な接続があれば、ある程度利用可能です。優先度は空室状況には関係ありません。

メッセージが裸の JID (特定の接続なし) に宛てられている場合、サーバーがメッセージをルーティングするために優先度レベルが作用します。ユーザーが複数の接続を持っている場合、サーバーは優先度が最も高い接続にメッセージを配信します。同じ優先順位の複数の接続は、サーバーとその構成に応じて異なる動作をする可能性があります。たとえば、Google はすべてのリソースに配信すると思いますが、Openfire (デフォルト) は内部アルゴリズムに基づいてそのうちの 1 つにのみ配信します。仕様によれば、これらの動作はどちらも有効です。

于 2012-05-15T15:59:38.873 に答える