在openfire

时间:2018-02-05 12:18:29

标签: javascript openfire strophe converse.js

我已经使用fastpath插件安装了openfire。 使用逆插件,我可以将用户重定向到工作组中的相应队列。

现在,我正在尝试将converse.js添加到具有相同功能的页面。我可以看到并与其他联系人聊天,但是当fastpath试图让我参加与相应代理的会议时(根据问题),我收到错误。

这是我的js:

  converse.initialize({
            bosh_service_url: 'http://chat.domain.com:7070/http-bind/',
            show_controlbox_by_default: true,
            allow_muc_invitations: true,
            keepalive: true,
            debug: true,
            allow_non_roster_messaging: true,
            allow_contact_requests: true,
            auto_join_on_invite: true,
            roster_groups: true,
            jid: 'user@chat.domain.com',
            password: 'password',
            auto_login: true,
            auto_subscribe: true
           }); 

开:

_converse.onDirectMUCInvitation = function (message) {
 var x_el = message.querySelector('x[xmlns="jabber:x:conference"]'),
        from = Strophe.getBareJidFromJid(message.getAttribute('from')),
        room_jid = x_el.getAttribute('jid'),
        reason = x_el.getAttribute('reason');}

尽管消息包含以下内容,但x_el为空:

<message xmlns="jabber:client" 
from="pjiw6d129@conference.chat.domain.com" 
to="user@chat.domain.com/converse.js-60521038">
<workgroup xmlns="http://jabber.org/protocol/workgroup" jid="test@workgroup.chat.domain.com"/>
<session xmlns="http://jivesoftware.com/protocol/workgroup" id="pjiw6d129"/>
<x xmlns="http://jabber.org/protocol/muc#user">
    <invite from="test@workgroup.chat.domain.com">
        <reason>Please join me for a chat.</reason>
    </invite>
</x>
<x xmlns="jabber:x:conference" jid="pjiw6d129@conference.chat.domain.com"/>

我遗失了一些东西但却看不到它。

感谢您的帮助!

问题出在querySelector,替换为

room_jid = x_el.getAttribute('jid'),
reason = x_el.getAttribute('reason');}

room_jid = message.getElementsByTagName('x')[1].getAttribute('jid'),
reason = message.getElementsByTagName('x')[0].getAttribute('reason');
在converse.js中

1 个答案:

答案 0 :(得分:1)

Openfire的FastPath是XMPP扩展XEP-0142: Workgroup Queues的实现。据我所知,converse.js(版本3.3.2,这是我编写本文时的最新版本),不支持此扩展。