如何监控gtalk状态消息的变化?

时间:2013-07-07 06:51:31

标签: python xmpp google-talk

我想编写一个程序(最好是在python中),它可以监视我的gtalk状态消息,每当我发布一个新的gtalk状态消息时,该程序将获取此消息的内容并将其发布到其他地方。

我有办法注册我的gtalk状态更改通知吗?或者我是否必须经常轮询我的状态?我在哪里可以找到API呢?

2 个答案:

答案 0 :(得分:1)

我建议你使用sleekxmpp。您可以注册这样的回调:

self.add_event_handler("changed_status", self.my_callback_function)

self是您继承自sleekxmpp.ClientXMPP

的类的实例

修改:我刚刚为您制作了此代码(可根据需要随意使用)

import sleekxmpp
from ConfigParser import ConfigParser

class StatusWatcher(sleekxmpp.ClientXMPP):
    def __init__(self, jid_to_watch):
        self._jid_to_watch = jid_to_watch
        config = ConfigParser()
        config.read("config.ini")
        jid = config.get("general", "jid")
        resource = config.get("general", "resource")
        password = config.get("general", "password")
        sleekxmpp.ClientXMPP.__init__(self, jid + "/" + resource, password)

        self.add_event_handler("session_start", self.handle_XMPP_connected)
        self.add_event_handler("changed_status", self.handle_changed_status)

    def handle_XMPP_connected(self, event):
        print "connected"
        self.sendPresence(pstatus="I'm just a Bot.")
        self.get_roster()

    def handle_changed_status(self, pres):
        if pres['from'].bare == self._jid_to_watch:
            print pres['status']


xmpp = StatusWatcher("login@gmail.com") # The account to monitor
xmpp.register_plugin('xep_0030')
xmpp.register_plugin('xep_0199')
if xmpp.connect():
    xmpp.process(threaded=False)

您需要使用凭据创建文件config.ini

[general]
jid=jid@host.org
resource=presence_watcher
password=yourpwd

答案 1 :(得分:0)

由于Google Talk本质上是一种XMPP服务,因此请使用该协议注册您的程序,以便了解新消息(以及其他更新,例如在线状态)。

一些指示: