通过 Python 获取 Jabber 状态

Posted

技术标签:

【中文标题】通过 Python 获取 Jabber 状态【英文标题】:Getting a Jabber status via Python 【发布时间】:2010-03-03 23:06:27 【问题描述】:

我正在使用 Django 框架开发一个网站,我需要为用户检索 Jabber(好的,Google Talk)状态。对于一个简单的任务,大多数 Jabber python 库似乎都是令人难以置信的过度杀伤(和开销)。有什么简单的方法可以做到这一点吗?

我对 XMPP/Jabber 知之甚少,但我当然愿意学习。您是否需要成为经过身份验证的“好友”用户才能检索其他用户的状态?

【问题讨论】:

对于好奇的人:我最终这样做的方式是我决定放弃获取状态消息而只检查用户是否在线。为此,我编写了一个 Google AppEngine 应用程序,它检查用户是否在线(我只检查一个用户,但它很容易成为 URL 参数),通过 urllib 检索并从那里解析它。是的,有点啰嗦,但它让我不必编写自己的 jabber bot。 【参考方案1】:

您是否需要经过身份验证并且 “好友”用户检索另一个 用户状态?

是的。

要获取给定用户的状态,您应该编写一个 jabber 机器人,并且该用户应该将您的机器人添加为朋友。然后您将能够获得该用户的状态。 FriendFeed 和其他服务可以做到这一点。

Google Buzz 来自 Google,因此他们已经可以访问您的聊天状态...

【讨论】:

【参考方案2】:

我建议查看 Google AppEngine 的 XMPP API(Django 也可以在 AppEngine 上运行)。 AFAIK,您必须获得授权才能检查用户的状态。

【讨论】:

这看起来是个不错的选择,直到我向下滚动:一个应用程序只能查询 Google Talk 用户的状态,并且只能查询那些“订阅”了该应用程序的用户。 XMPP 服务无法查询其他 XMPP 服务上的用户状态。我想知道这是否意味着我想做的事情是不可能的?不可能,因为谷歌是为 Buzz 做的……麻烦。 code.google.com/appengine/docs/python/xmpp/…

以上是关于通过 Python 获取 Jabber 状态的主要内容,如果未能解决你的问题,请参考以下文章

获取 Facebook Chat 的在线状态

Ejabberd:如何限制获取 jabber 用户目录(JUD)

在网页中显示 Cisco Jabber 的用户在线状态

jabber 服务器返回数据

如何通过 Jabber/xmpp 创建聊天 [关闭]

XMPP:如何通过 Jabber Id 查询特定的名册信息