3

OpenFire インスタンスの「ルーム」に XMPP メッセージを送信しようとすると問題が発生します。最終的に、CruiseControl.NET ビルド サーバーは、追加の通知手段として、適切な「ルーム」に成功/失敗メッセージを送信できるようになります。

Matrix XMPP ライブラリを使用して、VS2010 を使用して C# でコンソール アプリケーションを作成しています。アイデアは、CCNet に接続して必要に応じていくつかの引数を渡すことができる単純な .exe を作成することでした。

以下のコードは基本的に、部屋を指すように更新した Matrix サイト/ドキュメントのサンプル コードです。

static void Main(string[] args)
{
    var xmppClient = new XmppClient
    {
        XmppDomain = "SERVER",
        Username = "davidc",
        Password = "*********"
    };

    xmppClient.OnRosterEnd += delegate
    {
        xmppClient.Send(new Message
        {
            To = "roomname@conference.SERVER",
            From = "davidc@SERVER",
            Type = MessageType.groupchat,
            Body = "Just Testing the XMPP SDK"
        });
    };
    xmppClient.Open();

    Console.WriteLine("Press return key to exit the application");
    Console.ReadLine();

    xmppClient.Close();
}

問題なく個々のユーザーに送信できますが (それに応じて To と Type を変更します)、部屋を指すようにコードを変更すると、黙って終わります! ルームに対応するために必要な追加の「ハンドシェイク」はありますか?

Windows Server で実行される限り、ソリューションに C# を使用する必要はありません。

4

1 に答える 1

2

XEP-0045、「マルチユーザー チャット」をお読みください。メッセージを送信する前に、ルームに入る必要があります。簡単な修正については、セクション 7.1.1 を参照してください。ここでは、簡素化された (古い) プロトコルを使用してルームに参加する方法を示しています。

<presence
    to='darkcave@chat.shakespeare.lit/thirdwitch'/>

新しいプロトコルの場合は、xセクション 7.1.2 から追加のタグを含めます。

<presence
    to='darkcave@chat.shakespeare.lit/thirdwitch'>
  <x xmlns='http://jabber.org/protocol/muc'/>
</presence>

私はあなたのライブラリを知りませんが、次のようなコードが必要になるでしょう:

xmppClient.Send(new Presence
{
    To = "roomname@conference.SERVER/mynick",
});
于 2011-02-22T07:42:22.413 に答える