2011-01-19 3 views
3

Я пытаюсь создать очень простой скрипт, который использует xmpppy для python для отправки сообщения через facebook chat.xmpppy и Facebook Интеграция с чатом

 
import xmpp 
FACEBOOK_ID = "[email protected]" 
PASS = "password" 
SERVER = "chat.facebook.com" 
jid=xmpp.protocol.JID(FACEBOOK_ID) 
C=xmpp.Client(jid.getDomain(),debug=[]) 
if not C.connect((SERVER,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",)) 

Этот код работает, чтобы отправить сообщение через Gchat, однако, когда я пытаюсь с Facebook я получаю эту ошибку:

Произошла ошибка при поиске _xmpp-client._tcp.chat.facebook.com

когда я удалить @ chat.facebook.com из FACEBOOK_ID я получаю вместо этого:

 
File "gtalktest.py", line 11, in 
    if not C.connect((SERVER,5222)): 
    File "/home/john/xmpppy-0.3.1/xmpp/client.py", line 195, in connect 
    if not CommonClient.connect(self,server,proxy,secure,use_srv) or secureNone and not secure: return self.connected 
    File "/home/john/xmpppy-0.3.1/xmpp/client.py", line 179, in connect 
    if not self.Process(1): return 
    File "/home/john/xmpppy-0.3.1/xmpp/dispatcher.py", line 302, in dispatch 
    handler['func'](session,stanza) 
    File "/home/john/xmpppy-0.3.1/xmpp/dispatcher.py", line 214, in streamErrorHandler 
    raise exc((name,text)) 
xmpp.protocol.HostUnknown: (u'host-unknown', '') 

Я также заметил, в любое время я импортировать XMPP я получаю следующие два сообщения, когда г unning:

 
/home/john/xmpppy-0.3.1/xmpp/auth.py:24: DeprecationWarning: the sha module is deprecated; use the hashlib module instead 
    import sha,base64,random,dispatcher 
/home/john/xmpppy-0.3.1/xmpp/auth.py:26: DeprecationWarning: the md5 module is deprecated; use hashlib instead 
    import md5 

Я довольно новый для решения такого рода проблем, и посоветовать, или ссылки на ресурсы, которые могли бы помочь мне двигаться вперед в решении этих вопросов были бы весьма признателен. Спасибо за прочтение!

+0

Похоже, вы делаете все правильно. Попробуйте добавить параметр 'always' to' debug' конструктора Client: 'C = xmpp.Client (jid.getDomain(), debug = ['always'])'. Возможно, эти журналы скажут немного больше. :) – eigenein

ответ

2

Я также начал этот же проект и оказался в одной и той же проблеме. Я тоже нашел решение. Вы должны написать UserName из facebook (следовательно, вы должны выбрать одно имя пользователя), и это тоже в маленьких Caps. Это самая важная часть. Скорее всего, ты тоже, как я, не писал бы это в маленьких шапках.

1
import xmpp 

FACEBOOK_ID = "[email protected]" 
PASS = "password" 
SERVER = "chat.facebook.com" 

jid=xmpp.protocol.JID(FACEBOOK_ID) 

client=xmpp.Client(jid.getDomain(),debug=['always']) 

if not client.connect((SERVER,5222)): 
    raise IOError('Can not connect to server.') 
if not client.auth(jid.getNode(),PASS): 
    raise IOError('Can not auth with server.') 


message = xmpp.protocol.Message(frm=client.Bind.bound[0], to="-<#_ID_OF_FRIEND>@chat.facebook.com", typ="chat", body="Hello world",) 

client.SendAndWaitForResponse(message) 

Это сработало для меня. В любом случае, если вы хотите узнать ответ сервера на свой запрос, используйте Client.SendAndWaitForResponse вместо Client.send;)

Смежные вопросы