我是python&的新手sleekxmpp脚本,想知道如何使用python(主要是下面节中的节点)传递这个iq节(XEP-0133:服务管理 - 获取在线用户):
http://xmpp.org/extensions/xep-0133.html#get-online-users-list
<iq from='bard@shakespeare.lit/globe'
id='get-online-users-list-1'
to='shakespeare.lit'
type='set'
xml:lang='en'>
<command xmlns='http://jabber.org/protocol/commands'
action='execute'
node='http://jabber.org/protocol/admin#get-online-users-list'/>
</iq>
我尝试了什么:
iq = self .make_iq_get(queryxmlns='http://jabber.org/protocol/commands', ito=self.domain, ifrom=self.jid, iq='')
response = iq.send()
print ('response = %s' % response)
在python中运行上面的代码总是导致IqError。
任何人都可以解释如何将上述iq节的xmlns,动作和节点信息传递给make_iq_get吗?
请帮助!!
答案 0 :(得分:0)
以下代码解决了我上面的问题:
第一行代码返回一个要填充的表单,第二行返回在最后一行代码中使用的会话ID iq = self['xep_0050'}.send_command(domain, "http://jabber.org/protocol/admin#get-online-users-list")
sessionid = iq['command']['sessionid']
form = self.xmpp.plugin['xep_0004'].make_form(ftype='submit')
field = form.add_field(
ftype='hidden',
type='hidden',
var='FORM_TYPE',
value=ADMIN)
field['type'] = 'hidden'
form.add_field(var='max_items', value='100')
print self['xep_0050'}.send_command(domain, "http://jabber.org/protocol/admin#get-online-users-list", sessionid=sessionid, payload=form)