Как отправить сообщение с использованием xmpppy клиенту jabber?
Мне нужно отправить клиент чата на основе xmpp (hipchat), и я использую xmpp.py для этой цели. Сейчас я пытаюсь отправить сообщение из оболочки. Ниже приведены утверждения, которые я выполняю из оболочки:
>>> import xmpp
>>> jid = xmpp.protocol.JID('99999_9999@chat.hipchat.com')
>>> cl=xmpp.Client(jid.getDomain(),debug=[])
>>> cl.connect()
'tls'
>>> cl.auth(jid.getNode(),'password')
'sasl'
>>> cl.send(xmpp.protocol.Message('99999_9999@chat.hipchat.com','hey!'))
'3'
Я использую тот же идентификатор Jabber для аутентификации и в качестве получателя. Я также онлайн в чате, но я не получаю никаких сообщений. Чего не хватает?
2 ответа
Решение
Я скучал по typ
параметр. Adding it with value chat
решил проблему:
cl.send(xmpp.protocol.Message('99999_9999@chat.hipchat.com','hey!', typ='chat'))
Некоторым более старым серверам XMPP требуется начальное состояние присутствия. Состояние отправляется с помощью следующего вызова до cl.send
:
cl.SendInitPresence(requestRoster=0)
Смотрите также пример xsend с домашней страницы xmpppy: http://xmpppy.sourceforge.net/examples/xsend.py