使用node-xmpp读取XMPP控制台

我有一个工作问题,我找不到解决scheme。 我知道StackOverflow问题不适用于文档,但显然node-xmpp的文档相当…“轻”。

我的问题是以下几点:

我有一个xmpp客户端连接到服务器。 当服务器调用REST API时,该服务器用于向客户端发送通知。 基本上HTTP请求将得到一个202代码,如果服务器确定请求看起来OK并且将通过XMPP协议返回完整的XML答案。

对于那些可能在这个具体问题上有一些洞察力的人:我正在尝试使用思科Finesse API通知系统。

我设法使用Pidgin查看这些通知,但要看到它们的唯一方法是打开XMPP控制台(而不是常规聊天stream程)。

现在我设法使用node-xmpplogin到这个XMPP服务器,但我无法读取通知。 我试图听“数据”和“节”事件,但它从来没有触发这些事件。

这是代码摘录:

const XMPP = require("node-xmpp-client"); let xmpp_client = new XMPP({ jid: json_message.login + '@abc.inc', password: json_message.pwd, host: CONF.FINESSE_SERVER.replace("http://", ""), port: 5222 }); console.log("jid: " + json_message.login + '@abc.inc'); console.log("password: " + json_message.pwd); console.log("host: " + CONF.FINESSE_SERVER.replace("http://", "")); console.log("post: 5222"); xmpp_client.on("online", function(){ console.log("online"); }); xmpp_client.on('stanza', function(stanza) { console.log("xmpp::"); console.log('Incoming stanza: '); console.log(stanza); }); xmpp_client.connection.on("data", function(data) { console.log(data.toString("utf-8")); }); 

我现在有点困惑,因为思科的文档没有详细介绍JavaScript的任何内容,而且node-xmpp文档是非常短的。

任何帮助是受欢迎的,在此先感谢人! \ O /

您需要发送一个presence节,并订阅您想要收到的事件。 例:

 const xmppXml = require('@xmpp/xml') , xmppClient = require('node-xmpp-client') ; let host = YOUR_HOST; let fqdn = YOUR_FQDN; let username = YOUR_USERNAME; let password = YOUR_PASSWORD; let jid = username + '@' + fqdn; let xmpp_client = new xmppClient({ jid: jid, password: password, host: host, port: 5222 }); xmpp_client.connection.on('data', (data) => { console.log(data.toString('utf-8')); }); xmpp_client.on('online', () => { xmpp_client.send(new xmppClient.Stanza('presence', { })); // Subscribe to REAL-TIME events. // REFERENCE: https://developer.cisco.com/media/finesseDevGuide/CFIN_RF_S7A50AC1_00_subscription-management.html let subscribe = xmppXml.createStanza('subscribe', { xmlns: 'http://jabber.org/protocol/pubsub', node : '/finesse/api/User/' + username, jid : jid, }); let pubsub = xmppXml.createStanza('pubsub', { xmlns: 'http://jabber.org/protocol/pubsub', }); let iq = xmppXml.createStanza('iq', { to : 'pubsub.' + fqdn, from: jid, type: 'set', }); iq.cnode(pubsub).cnode(subscribe); let msg = iq.toString(); xmpp_client.send(msg); }); 

尝试添加

 xmpp_client.on('error', console.error) 

获取有关发生的任何错误的信息。

Interesting Posts