【问题标题】:Send a XMPP message to an OpenFire room from the command line从命令行向 OpenFire 房间发送 XMPP 消息
【发布时间】:2011-07-01 10:10:38
【问题描述】:

我在尝试向 OpenFire 实例中的“房间”发送 XMPP 消息时遇到问题。最终结果是我们的 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();
}

我可以毫无问题地发送给单个用户(相应地更改 To 和 Type),但是将代码更改为指向一个房间会在静默中结束!是否需要进行一些额外的“握手”来解决房间问题?

只要它可以在 Windows Server 上运行,我真的不必使用 C# 来解决问题。

【问题讨论】:

    标签: c# command-line xmpp openfire


    【解决方案1】:

    您会想阅读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",
    });
    

    【讨论】:

    • 谢谢乔 - 我确实看过多用户聊天部分,但作为一个 XMPP 处女它让我有点失落。如果我在正确的地方,那么我会卷起袖子再试一次;-)
    • 我尝试在消息之前发送一个新的 Presence 对象,但没有任何乐趣 - 你有任何代码吗?
    • 谢谢乔 - 终于搞定了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2023-03-27
    • 2017-06-01
    • 2021-01-04
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多