我正在使用node-xmpp在node.js中编写一个bot。到目前为止,这是非常直接的,除了我有一个问题,弄清楚谷歌Talk如何处理它的用户授权(当处理请求与你名单上的人聊天时)。
我正在捕捉所有节,然后将它们记录到控制台,但是没有来自请求授权的用户的数据。
对我应该寻找什么的解释,或者这个事件是否发生在jabber协议上。
[added]我知道技术上在订阅请求时,会在订阅请求中发送一个在线节。由于某种原因,我无法使用node-xmpp看到它们通过线路传输。此外,我需要找到一种方法来确定当我的机器人登录时哪些状态请求处于“待处理状态”。我(无论如何)认为它们将被列入名单中,但是这种情况并不正确。
任何帮助,找出从这里去哪里都会有用。
答案 0 :(得分:5)
好的,我终于想出了如何在订阅后获得订阅请求。关于它的信息不多,所以我会把一个博客文章放在一起,但我觉得在这里回答它可能也很好。
我发现如果我根据以下信息进行了Google列表查询:
http://code.google.com/apis/talk/jep_extensions/roster_attributes.html
示例节:
<iq from="username@gmail.com/D2D4E5A8" type="get" id="google-roster-1"><query xmlns="jabber:iq:roster" xmlns:gr="google:roster" gr:ext="2"/></iq>
服务器将首先响应您的待处理服务器订阅“presence”节
例如:
<presence type="subscribe" from="pendinguser@gmail.com" to="namehere@gmail.com/D2D4E5A8" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"/>
然后你名册的其余部分“存在”节。重要的是要注意,除非您进行名册查询,否则您的订阅“状态”节不会从服务器发送给您。我不确定为什么会这样,以及为什么它没有记录在某处超出我的范围。无论如何,至少我现在可以获得试图访问我的机器人的人员名单。
答案 1 :(得分:1)
注意:这不是我的知识领域,只是我的兴趣所在。我没有实际经验只是一点研究。这本来是一个评论,但是在这个主题上做了更多的搜索,我想出了一些可能有用的东西。
这是一个谷歌聊天室主页 http://partychapp.appspot.com/您可以获得来源 http://code.google.com/p/partychapp/
这些链接来自http://xmpp.org/2010/02/xmpp-roundup-13-services/,其中有许多其他可能有用的资源。
http://code.google.com/p/node-xmpp-bosh/有一些关于此的代码,我没有这样做,但主题很有趣。
我希望你在撰写博客文章或项目并分享之后找到答案。我会感兴趣的。