xmpppy и интеграция чата Facebook - PullRequest
3 голосов
/ 19 января 2011

Я пытаюсь создать очень простой скрипт, который использует xmpppy для Python для отправки сообщения через чат в Facebook.

import xmpp
FACEBOOK_ID = "username@chat.facebook.com"
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("friend@chat.facebook.com","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, я получаю следующие два сообщения при запуске:

/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

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

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

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

1 голос
/ 06 мая 2013
import xmpp

FACEBOOK_ID = "username@chat.facebook.com"
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;)

...