1

gtalk ステータス メッセージを監視できるプログラムを (できれば Python で) 書きたいのですが、新しい gtalk ステータス メッセージを投稿するたびに、このプログラムはこのメッセージの内容を取得し、別の場所に投稿します。

gtalk ステータス変更の通知を登録する方法はありますか? または、自分のステータスを常にポーリングする必要がありますか? それを行うための API はどこにありますか?

4

2 に答える 2

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
于 2013-07-07T08:07:14.373 に答える
0

Google トークは基本的に XMPP サービスであるため、プロトコルを使用してプログラムを登録し、新しいメッセージ (およびプレゼンスなどのその他の更新) を通知されるようにします。

いくつかのポインタ:

于 2013-07-07T07:27:52.713 に答える