我在尝试将XMPP消息发送到我们的OpenFire实例中的“房间”时遇到问题。最终结果是我们的CruiseControl.NET构建服务器能够将成功/失败消息发送到适当的“房间”,作为一种附加的通知方式。
我正在使用Matrix XMPP库使用VS2010在C#中创建控制台应用程序。这个想法是创建一个简单的.exe,我可以将其连接到CCNet并根据需要将一些参数传递给它。
下面的代码基本上是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();
}
我可以发送给单个用户(相应地更改“收件人”和“类型”),但没有任何问题,但是更改代码以指向某个房间的操作将以静默方式结束!是否需要进行其他“握手”操作以解决房间问题?
只要解决方案可以在Windows Server上运行,我就不必为解决方案使用C#。
最佳答案
您将要阅读XEP-0045,“多用户聊天”。您需要先进入会议室,然后再向其发送消息。有关快速修复的信息,请参见第7.1.1节,其中显示了如何使用简化(较旧)协议加入会议室:
<presence
to='darkcave@chat.shakespeare.lit/thirdwitch'/>
对于较新的协议,请在第7.1.2节中添加一个额外的
x
标记:<presence
to='darkcave@chat.shakespeare.lit/thirdwitch'>
<x xmlns='http://jabber.org/protocol/muc'/>
</presence>
我不知道您的库,但是您需要类似以下代码:
xmppClient.Send(new Presence
{
To = "roomname@conference.SERVER/mynick",
});