4

我正在使用 node-xmpp 在 node.js 中编写一个机器人。到目前为止,这很简单,除了我在弄清楚 google Talk 如何处理它的用户授权时遇到了问题(在处理请求与不在你名册上的人聊天时)。

我正在捕获所有通过的节并将它们记录到控制台,但没有来自请求授权的用户的数据。

关于我应该寻找什么的任何解释,或者这个事件是否甚至通过 jabber 协议发生。

[附加] 我知道从技术上讲,当提出订阅请求时,会随订阅请求一起发送出席信息节。由于某种原因,我看不到这些使用 node-xmpp 的网络。另外,我需要找到一种方法来确定当我的机器人登录时哪些状态请求是“待定的”。我认为(不正确地)它们会在名册中列出并带有某种标志,但这是不正确的。

找出从这里去哪里的任何帮助都会很有用。

4

2 回答 2

5

好的,我终于弄清楚了如何在发出订阅请求后获取它们。那里没有太多信息,所以我会整理一篇博客文章,但我觉得在这里回答它可能也很好。

我发现如果我根据以下信息进行谷歌名册查询:

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 type="subscribe" from="pendinguser@gmail.com" to="namehere@gmail.com/D2D4E5A8" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"/>

然后是你花名册的其他“存在”节。重要的是要注意,除非您进行花名册查询,否则您的订阅“存在”节不会从服务器发送给您。我不确定为什么会这样,为什么它没有记录在某处,这超出了我的范围。无论如何,至少我现在可以得到试图访问我的机器人的人的名单。

于 2011-08-26T21:48:55.153 回答
1

注意:这不是我的知识领域,只是我的兴趣。我没有实际经验,只是进行了一些研究。这本来是一条评论,但是在对该主题进行更多搜索时,我想出了更多可能有帮助的东西。

这里是google聊天室主页 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/有一些关于此的代码,我还没有完成,但这个话题很有趣。

我希望你在写完一篇博文和/或一个项目并分享之后找到答案。我会很感兴趣。

于 2011-08-21T07:42:48.103 回答