Форум сайта python.su
# -*- coding: utf-8 -*-
import sys, os, xmpp, time
#id2084081@vk.com
#id82136693@vk.com
tojid="MegaAccount@jabber.ru"
text="MegaMegaMegaMega"
jidparams={"jid":"МОЙ_АККАУНТ@jabber.ru", "password":"qweasdzxc"}
jid=xmpp.protocol.JID(jidparams['jid'])
cl=xmpp.Client(jid.getDomain(),debug=[])
con=cl.connect()
if not con:
print 'could not connect!'
sys.exit()
print 'connected with',con
auth=cl.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
if not auth:
print 'could not authenticate!'
sys.exit()
print 'authenticated using',auth
#cl.SendInitPresence(requestRoster=0) # you may need to uncomment this for old server
id=cl.send(xmpp.protocol.Message(tojid,text))
print 'sent message with id',id
time.sleep(1) # some older servers will not send the message if you disconnect immediately after sending
#cl.disconnect()
Отредактировано (Авг. 3, 2010 18:45:09)
Офлайн
Судя по всему vk.com как-то нестандартно понимает xmpp. Если при биндинге не передать ресурс, то он не возвращает jid, хотя вроде должен. Он возвращает вместо этого ресурс и все ломается.
Для начала попробуйте перед вызовом cl.auth просто установить ресурс руками, вот так: jid.setResource('test')
Если этого будет недостаточно, то есть еще вариант, что серверу нужно подсунуть тот ресурс, который он послал при биндинге без ресурса, то есть биндить в 2 этапа. Но для этого нужно уже патчить xmpp. Я проверить не могу, поскольку аккаунта vk.com у меня нет. Проверяйте, если не будет работать - покажу как пропатчить xmpp.
Офлайн
Я выставил ресурс. Теперь сообщение таки отправляется. Но, тем не менее, не получается.
Офлайн