Xmpp ejabberd MUC客户端在创建文件室后无法获取配置表单

Xmpp ejabberd MUC客户端在创建文件室后无法获取配置表单,xmpp,ejabberd,multiuserchat,Xmpp,Ejabberd,Multiuserchat,我试图从与Ejabberd通信的XMPP客户端创建一个MUC室 这是我的Ejabberd muc配置: mod_muc: ## host: "conference.@HOST@" access: muc access_create: muc_create access_persistent: mud_create access_admin: muc_admin db_type: odbc max_user_conferences: 100 default_room_options: m

我试图从与Ejabberd通信的XMPP客户端创建一个MUC室

这是我的Ejabberd muc配置:

mod_muc: 
## host: "conference.@HOST@"
access: muc
access_create: muc_create
access_persistent: mud_create
access_admin: muc_admin
db_type: odbc
max_user_conferences: 100
default_room_options:
    mam: true
    public: false
    public_list: false
    allow_change_subj: false
    allow_user_invites: false
    members_only: false
    members_by_default: false
    anonymous: false
    allow_private_messages: true
    persistent: true
以下是我从muc客户端获得的功能:

<iq xmlns='jabber:client' from='conference.my.domain.com' to='my_id@my.domain.com/null' id='iqid1:sendIQ' type='result'>
    <query xmlns='http://jabber.org/protocol/disco#info'>
        <identity category='conference' type='text' name='Chatrooms'/>
        <feature var='http://jabber.org/protocol/disco#info'/>
        <feature var='http://jabber.org/protocol/disco#items'/>
        <feature var='http://jabber.org/protocol/muc'/>
        <feature var='http://jabber.org/protocol/muc#unique'/>
        <feature var='jabber:iq:register'/>
        <feature var='http://jabber.org/protocol/rsm'/>
        <feature var='vcard-temp'/>
        <feature var='urn:xmpp:mam:tmp'/>
        <feature var='urn:xmpp:mam:0'/>
        <feature var='urn:xmpp:mam:1'/>
        <x xmlns='jabber:x:data' type='result'>
             <field var='FORM_TYPE' type='hidden'>
                 <value>http://jabber.org/network/serverinfo</value>
             </field>
        </x>
   </query>
</iq>

http://jabber.org/network/serverinfo
当我尝试从我的客户端创建MUC房间时,使用:

<presence from='my_id@my.domain.com/null' to='new_room_id@conference.my.domain.com/my_nickname' xmlns='jabber:client'>
      <x xmlns='http://jabber.org/protocol/muc'/>
</presence>

我得到了一个新房间的回复:

<presence xmlns='jabber:client' from='new_room_id@conference.my.domain.com/my_nickname' to='my_id@my.domain.com/null'>
    <x xmlns='http://jabber.org/protocol/muc#user'>
        <item jid='my_id@my.domain.com/null' affiliation='owner' role='moderator'/>
        <status code='110'/>
        <status code='100'/>
        <status code='201'/>
    </x>
</presence>

当我尝试获取配置表单以设置文件室字段时:

<iq from='my_id@my.domain.com/null' to='new_room_id@conference.my.domain.com/my_nickname' type='get' xmlns='jabber:client' id='iqid2:sendIQ'>
    <query xmlns='http://jabber.org/protocol/muc#owner'/>
</iq>

我从Ejabberd服务器得到了答案:

<iq xmlns='jabber:client' from='new_room_id@conference.my.domain.com/my_nickname' to='my_id@my.domain.com/null' id='iqid2:sendIQ' type='get'>
    <query xmlns='http://jabber.org/protocol/muc#owner'/>
</iq>

下面是我的问题:

  • 为什么Ejabberd服务器会以相同的类型响应我的查询,而不是像type='result'或type='error'这样的类型?我用type='set'尝试了其他查询,同样的情况也发生了

  • 为什么muc服务的功能中没有类似:

  • 似乎可以为房间创建v形卡,它是如何工作的?它是否需要服务器端的一些附加配置


实际上,您并没有将数据包发送到房间,而是发送到用户昵称:“新建房间”_id@conference.my.domain.com/我的昵称。因此,您发送的数据包被路由回您。删除“/my_昵称”,您将能够与房间本身交谈并获得配置表

  • 正如米卡尔所指出的,你只是把
    发送到你自己的居住地址,所以ejabberd会把它传回给你
  • 关于你的其他问题:

  • 有趣的是,我试过并阅读了服务发现XEP,我认为它基本上被认为是多余的。
    #owner
    #admin
    #user
    名称空间是MUC的组件,因此您应该从
    http://jabber.org/protocol/muc
    。正如您在XEP-0030中看到的,参考示例也不包括:

  • 我不认为vcard temp意味着你可以设置任何东西-你只能请求MUC服务器的vcard,它返回

  • 
    ejabberd/mod_muc
    http://www.process-one.net/en/ejabberd/
    ejabberd MUC模块
    版权所有(c)2003-2011 ProcessOne
    

    当我尝试的时候