2

こんな感じのメールが来ました…

<message 
    from='pinza@some.com' 
    to='tulyar@some.com' 
    type='groupchat' 
    xmlns='jabber:message:group_chat_test'>

    <body>Here is my message.</body>
</message>

私のroutes.jsファイルでは、本文のコンテンツ以外に基づいてメッセージをルーティングしようとしています-具体的には、カスタム名前空間に基づいてルーティングしたいです(したがって、異なるグループチャットメッセージタイプを別の方法で処理できますコントローラー)だから私はこれを試します...

bind.query('message[type="groupchat"][xmlns="jabber:message:group_chat_test"]')
  .to(SD.Messenger.Room, "groupchat_test");

しかし、メッセージは group_chat_test コントローラーに到達するのではなく、イーサに入ります。これと同様のことを <iq> で行いますが、グループ チャット メッセージでは機能しないようです。

何か不足していますか?この方法でグループ チャット メッセージをクエリできるようにする必要がありますか? 他にできる方法はありますか?

参考までに、私の現在の回避策はこのハックです...

bind.query('message[type="groupchat"]').to(SD.Messenger.Room, "all_groupchat_msgs");

これで controllers.js

SD.Messenger.Room.prototype.all_groupchat_msgs = function() {
   // test the body of the incoming stanza and 
   // based on it's contents do different things...
};

(エジャバード、ボッシュ、ストロフ使用)

4

2 に答える 2

1

メインの XMPP スタンザ メッセージ、iq、およびプレゼンスのネームスペースを変更することはできません。それらの子要素にのみカスタム名前空間を持つことができます。

IQ が機能する場合、子要素の 1 つにカスタム名前空間がある可能性があります。

例:

<iq type='get' id='1' to='user@server.com/resource'>
   <query xmlns='my-custom-ns'>
      payload
   </query>
</iq>


<message type='groupchat' to='room@muc.server.com'>
   <x xmlns='my-custom-ns'>
      payload
   </x>
</message>
于 2012-12-06T08:39:10.010 に答える
1

これがうまくいったアプローチです...カスタム属性を追加します...

<message 
    from='pinza@some.com' 
    to='tulyar@some.com' 
    type='groupchat' 
    custom_subtype='my_custom_type'>

    <body>Here is my message.</body>
</message>

そのカスタム属性をファイラーするルートを作成します

bind.query('message[type="groupchat"][custom_subtype="my_custom_type"]')
  .to(Room, "controller_for_my_custom_type");
于 2012-12-06T13:30:05.473 に答える