除非管理员帐户加入空间,否则XMPP MUC会议室无法使用

时间:2015-04-06 13:29:35

标签: xmpp ejabberd muc

我在使用ejabberd和php库访问xmlrpc时遇到了一些问题。我能够创建没有问题的房间,所以这一切似乎都有效。

use \GameNet\Jabber\RpcClient;
use \GameNet\Jabber\Mixins\UserTrait;
$rpc = new RpcClient([
        'server' => $app->config['jabber'].':4560',
        'host' => 'mydomain.org',
        'debug' => false,
    ]);

$rpc->createRoom($groupname);
$rpc->setRoomOption($groupname,'persistent',true);
$rpc->setRoomOption($groupname,'members_only',true);
$rpc->setRoomOption($groupname,'public',false);
$rpc->setRoomOption($groupname,'moderated',false);
$rpc->setRoomAffiliation($groupname, $user.'@mydomain.org' , 'owner');

我可以在Ejabberd看到房间,并使用Ejabberd管理员帐户加入MUC房间。然后我添加另一个用户并成为会员:

$rpc->setRoomAffiliation($groupname, 'user2@mydomain.org' , 'member');

使用jabber客户端,user2可以看到房间,但是当他们加入它时,我收到错误(来自客户端,没有从服务器传递)"无法加入房间:无法输入房间:你被禁止进入房间"

让我感到困惑的是,如果我使用管理员帐户启动另一个客户端并加入会议室,我可以使用user2加入它。如果Admin离开,则user2未被踢出,但如果user2离开并尝试重新加入,则会收到错误消息。

似乎房间的权限是错误的,但我无法思考。几乎看起来房间想要主持人出席,但房间没有被调节。

我希望只有附属成员的用户可以看到/访问该房间。

附加信息 - 这是对会员室联盟请求的响应 - 该响应值为0表示它不起作用吗?

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>res</name>
                  <value>
                     <int>0</int>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodResponse>

0 个答案:

没有答案