2016-05-20 3 views
1

Я новичок в python & скриптах sleekxmpp и хотел бы знать, как передать эту iq stanza (XEP-0133: Администрирование сервиса - Получить онлайн-пользователей) с использованием python (в основном, узел ниже строфы):sleekXMPP: Получить список пользователей, помеченных пользователями на сервере XMPP

http://xmpp.org/extensions/xep-0133.html#get-online-users-list


<iq from='[email protected]/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.

Может кто-нибудь объяснить, как пройти через xmlns, действие и информацию о iq stanza в make_iq_get ??

Пожалуйста, помогите !!

+0

Вы создаете 'get' IQ stanza, но, похоже, хочет получить инструкцию' set'. 'make_iq_get' создает строфу IQ' query', но вам нужен элемент 'command', а не элемент' query' под элементом 'iq', и вы, похоже, вообще не создали узел' command'. Распечатайте строфу 'iq', которую вы генерируете выше, и вы должны увидеть, что я имею в виду. –

+0

Я не пытаюсь установить. Вместо этого я пытаюсь получить список онлайн-пользователей на серверах XMPP, используя команду make_iq_get. – user6360694

+0

Отсканированный фрагмент явно «type = 'set''. Но это не единственная проблема, о которой я говорил. Распечатайте строфу XML, представленную вашей переменной 'iq', и сравните ее с тем, что вам нужно отправить, и вы увидите разницу. Я ожидаю, что ваша строфа 'iq' выглядит примерно так:' '. –

ответ

0

После кода решить мою вышеуказанную проблему:

первая строка кода возвращает вам форму для заполнения, вторая строка возвращает идентификатор сеанса, который используется в последней строке кода
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) 
Смежные вопросы