如何使用 SleekXMPP 或 python 处理 XMPP 订阅我一般

Posted

技术标签:

【中文标题】如何使用 SleekXMPP 或 python 处理 XMPP 订阅我一般【英文标题】:How to handle XMPP subscribtions with SleekXMPP or python i general 【发布时间】:2011-06-28 12:58:57 【问题描述】:

这是我的用例:

    用户点击网页上的链接说:“在 XMPP 上关注此人” 脚本启动并获取(基于注册数据)请求者用户名和密码并启动。 订阅请求已发送。如果订阅已发送,则脚本不应发送另一个订阅。如果订阅被拒绝,脚本应该通知用户。 然后脚本应该退出

到目前为止,这是我的代码,使用 SleekXMPP:

import sys, sleekxmpp, logging

if sys.version_info < (3, 0):
    reload(sys)
    sys.setdefaultencoding('utf8')

#This is hardcoded here, for illustration. 
jid = 'hermans@******.com/Work'
password = '********'
targetjid = 'simena@*******.com/Work'

class SubscribeWorker(sleekxmpp.ClientXMPP):
    def __init__(self, jid, password):
        sleekxmpp.ClientXMPP.__init__(self, jid, password)
        self.add_event_handler("session_start", self.start)

    def start(self, event):
        self.send_presence(pto=targetjid, ptype='subscribe')
        self.get_roster()

if __name__ == '__main__':
    logging.basicConfig(level=5,format='%(levelname)-8s %(message)s')
    xmpp = SubscribeWorker(jid, password)
    if xmpp.connect():
        xmpp.process(threaded=False)
        print("Done")
    else:
        print("Unable to connect.")

这会成功发送请求,但不会占用任何现有请求或订阅状态的高度。有没有人有关于使用 XMPP 进行订阅/取消订阅处理的示例代码? 而且我试图理解 wiki 和代码示例——我真的有,我现在只是被这段代码困住了。

提前感谢您的任何意见。

【问题讨论】:

【参考方案1】:

或者,尝试在网页上添加xmpp:simena@*.com?subscribe,这应该在您现有的桌面客户端中执行正确的操作。

【讨论】:

以上是关于如何使用 SleekXMPP 或 python 处理 XMPP 订阅我一般的主要内容,如果未能解决你的问题,请参考以下文章

在 SleekXMPP 中接收带有消息的“角色”和/或“从属关系”

Sleekxmpp:使用多个自定义节

SleekXMPP 自动接受所有聊天室邀请

SleekXMPP Muc 房间列表和发现

通过 SleekXMPP 发送 facebook 消息

SleekXMPP:将出席 ['muc']['jid'] 获取到每条消息的消息处理程序