2011-08-19 57 views
4

我正在使用node-xmpp在node.js中编写一个bot。到目前为止,这是非常直接的,除非我在理解Google Talk如何处理用户授权(处理请求与不在名单上的人聊天)时遇到问题。谷歌与nodejs和node-xmpp交谈的用户授权

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

任何我应该寻找的解释或如果这个事件甚至发生在jabber协议上。

我知道技术上何时发出订阅请求,存在节与订阅请求一起发送。出于某种原因,我无法使用node-xmpp查看这些线路。另外,我需要找出一种方法来确定当我的机器人登录时什么状态请求“待定”。我认为(无条件地)他们会以某种标志列在名单中,但这不正确。

任何帮助找出从这里去哪里将是有益的。

回答

5

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

我发现,如果我做了基于以下信息的谷歌名册查询:

http://code.google.com/apis/talk/jep_extensions/roster_attributes.html

例如节:

<iq from="[email protected]/D2D4E5A8" type="get" id="google-roster-1"><query xmlns="jabber:iq:roster" xmlns:gr="google:roster" gr:ext="2"/></iq> 

服务器将与您等待服务器订阅“第一回应存在“节

ex:

<presence type="subscribe" from="[email protected]" to="[email protected]/D2D4E5A8" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"/> 

然后你的名册的其余部分的“存在”节。请务必注意,除非您执行名册查询,否则您的订阅“状态”节不会从服务器发送给您。我不确定这是为什么,以及为什么它没有记录在我身边。无论如何,至少我可以获得试图访问我的机器人的人员名单。

+1

发布博客:http://blog.cogsworth.com/2011/09/06/Google-Talk-and-Pending-Subscription-Requests.html –

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/有一些关于这方面的代码,我没有做,但主题很有趣。

我希望如果你在撰写博客文章和/或项目并分享之后找到答案。这对我很感兴趣。

+1

这看起来像服务器端的东西的信息。我或多或少地试图确定如何使用gtalk作为客户端来查看待处理状态订阅请求... –

+0

用我找到的更多内容更新它。它可能不直接处理订阅请求,但我希望它可以提供帮助。 –