
Я пытаюсь написать скрипт на python для подключения к чату facebook. У меня просто не получается. Вот код:
import xmpp
FACEBOOK_ID = "[email protected]"
PASS = "password"
jid=xmpp.protocol.JID(FACEBOOK_ID)
C=xmpp.Client(jid.getDomain(),debug=['always'])
if not C.connect(("chat.facebook.com",5222)):
raise IOError('Can not connect to server.')
if not C.auth(jid.getNode(),PASS):
raise IOError('Can not auth with server.')
C.send(xmpp.protocol.Message("[email protected]","Hello world from script",))
Вот какую ошибку я получаю:
An error occurred while looking up _xmpp-client._tcp.chat.facebook.com
А это вывод отладчиказдесь.
Что показывает, что я действительно прохожу аутентификацию (строка 136), но сообщение все равно каким-то образом не отправляется. Я действительно застрял на этом уже несколько дней.
решение1
Как указал @grawity, вам необходимо получить JID, которые можно получить, добавив следующий код в свой скрипт.
В вашем коде после аутентификации на сервере вы можете запросить у сервера список контактов. В вашем коде добавьте это,
C.sendInitPresence(requestRoster=1)
rosterobject = C.getRoster()
Если вы хотите просто проверить/распечатать JID, вы можете сделать это с помощью следующего цикла.
for i in rosterobject.getItems():
print i
В объекте списка у вас должны быть контакты, также известные как JID. Теперь используйте этот JID в следующем операторе.
C.send(xmpp.Message("[email protected]","Hello world from script",))
Надеюсь, это решит вашу проблему.
решение2
username@chat.facebook.com
JID действительны только во время аутентификации. Для отправки сообщений вам необходимо использовать JID, которые вы можете узнать из своего списка XMPP. (Хотя отправка сообщения самому себе не работает.)-profileid@chat.facebook.com