如何在 C# 中将参与者添加到 XMPP 聊天室?

Posted

技术标签:

【中文标题】如何在 C# 中将参与者添加到 XMPP 聊天室?【英文标题】:How to add participants to XMPP chat room in C#? 【发布时间】:2014-01-08 12:39:45 【问题描述】:

我想在现有组中添加参与者。为此,我将参与者的从属关系作为所有者和角色作为主持人。

我正在“conference.jabber.org”上进行测试。我成功创建了房间,但是当我在那个房间中添加一些参与者时,它给出了错误

"error code=\"405\" type=\"cancel\">  not-allowed xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\" /></error>"

请帮忙。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您不能直接将用户添加到聊天室;你可以邀请他们,但他们必须自己明确加入。 (尽管无论他们是否在房间内,您都应该能够修改他们的隶属关系,如果他们在房间内,您应该能够将他们的角色更改为主持人。)

邀请参与者有两种方法。 One involves sending the invite through the chat room:

<message
    from='crone1@shakespeare.lit/desktop'
    id='nzd143v8'
    to='coven@chat.shakespeare.lit'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite to='hecate@shakespeare.lit'>
      <reason>
        Hey Hecate, this is the place for all good witches!
      </reason>
    </invite>
  </x>
</message>

和the other involves sending a message directly to the user you're inviting:

<message
    from='crone1@shakespeare.lit/desktop'
    to='hecate@shakespeare.lit'>
  <x xmlns='jabber:x:conference'
     jid='darkcave@macbeth.shakespeare.lit'
     password='cauldronburn'
     reason='Hey Hecate, this is the place for all good witches!'/>
</message>

【讨论】:

感谢@Legoscia 的回复。但我只是想知道 Wats App 是如何工作的?假设,如果我创建一个群组并添加一些朋友,那么它不会要求邀请。它直接将它们添加到创建的组中。就像这样,我不想邀请我的朋友,而是想直接添加他们。请建议我任何解决方案。谢谢。 我猜要么是客户端自动接受了邀请,要么他们的系统使用了 XEP-0045 定义的标准 MUC 以外的其他东西。 请告诉我一件事,我怎样才能将任何用户设置为房间的管理员或所有者?你能分享那个 iq 或 xml 吗? 在 XEP-0045 的 section 10.3 (for owner) 和 section 10.6 (for admin) 中有示例。 再次感谢@legoscia。有用。现在我想获取房间的所有用户信息,比如他们的角色和隶属关系。请告诉我我该怎么做。谢谢。

以上是关于如何在 C# 中将参与者添加到 XMPP 聊天室?的主要内容,如果未能解决你的问题,请参考以下文章

多用户聊天 XMPP

在 c# 中将 Object 标记添加到 X509Certificate2

如何使用 xmpp 框架和 openfire 服务器将电话簿联系人添加到 ios 中的聊天应用程序?

如何在 C# 中使用 agsXMPP 获取聊天记录

在 asmack 中将项目发送到 pubsub 节点

如何将 JavaScript XMPP 客户端(JSXC)配置到网站?