gtalk ステータス メッセージを監視できるプログラムを (できれば Python で) 書きたいのですが、新しい gtalk ステータス メッセージを投稿するたびに、このプログラムはこのメッセージの内容を取得し、別の場所に投稿します。
gtalk ステータス変更の通知を登録する方法はありますか? または、自分のステータスを常にポーリングする必要がありますか? それを行うための API はどこにありますか?
gtalk ステータス メッセージを監視できるプログラムを (できれば Python で) 書きたいのですが、新しい gtalk ステータス メッセージを投稿するたびに、このプログラムはこのメッセージの内容を取得し、別の場所に投稿します。
gtalk ステータス変更の通知を登録する方法はありますか? または、自分のステータスを常にポーリングする必要がありますか? それを行うための API はどこにありますか?
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
Google トークは基本的に XMPP サービスであるため、プロトコルを使用してプログラムを登録し、新しいメッセージ (およびプレゼンスなどのその他の更新) を通知されるようにします。
いくつかのポインタ: