2011-01-19 4 views
3

J'essaye de créer un script très simple qui utilise xmpppy de python pour envoyer un message sur facebook chat.xmpppy et Facebook Chat Intégration

 
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",)) 

Ce code fonctionne pour envoyer un message via Gchat, mais lorsque je tente avec facebook je reçois cette erreur:

Une erreur est survenue lors de la recherche _xmpp-client._tcp.chat.facebook.com

Lorsque je retire @ chat.facebook.com du FACEBOOK_ID je reçois ceci:

 
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', '') 

Je remarque aussi chaque fois que j'importer XMPP que je reçois deux messages suivants lorsque r 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 

Je suis assez nouveau pour résoudre ce genre de problèmes, et de conseiller, ou des liens vers des ressources qui pourraient me aider à aller de l'avant dans ces questions à résoudre serait grandement apprécié. Merci d'avoir lu!

+0

On dirait que vous faites tout correctement. Essayez d'ajouter 'always' au paramètre' debug' du constructeur Client: 'C = xmpp.Client (jid.getDomain(), debug = ['always'])'. Peut-être que ces journaux en diront un peu plus. :) – eigenein

Répondre

2

J'ai également démarré le même projet, et j'ai été piégé dans le même problème. J'ai trouvé la solution aussi. Vous devez écrire le UserName de facebook (d'où vous devez choisir un nom d'utilisateur) et cela aussi dans de petites majuscules. C'est la partie la plus importante. Très probablement vous aussi comme moi ne l'écririez pas en petites capitales.

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) 

Cela a fonctionné pour moi. Quoi qu'il en soit, si vous voulez connaître la réponse du serveur à votre requête, utilisez Client.SendAndWaitForResponse au lieu de Client.send;)