2009-08-19 2 views
4

나는 파이썬과 함께 xmpp를 사용하고 있으며, 간단한 클라이언트를 만들어서 id와 통신하도록하고 싶다. 내가 마지막 줄을 실행하면Python2.6 xmpp 재버 오류

#!/usr/bin/python 
import xmpp 

login = 'Your.Login' # @gmail.com 
pwd = 'YourPassword' 

cnx = xmpp.Client('gmail.com') 
cnx.connect(server=('talk.google.com',5223)) 
cnx.auth(login,pwd, 'botty') 

cnx.send(xmpp.Message("[email protected]" ,"Hello World form Python")) 

는 내가 다른 문을 실행할 때

IOError: Disconnected from server.

이 또한 내가 콘솔에 디버그 메시지를 얻을 예외를 얻을.

문제점은 무엇이있을 수 있으며 어떻게 해결할 수 있습니까?

+0

디버그 문을 사용하면 연결이 끊어있어 바로 전에 무슨 말을합니까? 승인되지 않은 오류가 표시됩니까? <실패의 xmlns = "항아리 : IETF : PARAMS : XML : NS : XMPP-SASL"> : 서버 오류로부터 연결이 끊어 –

답변

0

는 당신이 첫 번째 메시지를 보내기 전에 sendInitPresence를 호출 할 필요가 있다고 생각 :

... 
cnx.auth(login,pwd, 'botty') 
cnx.sendInitPresence() 
cnx.send(xmpp.Message("[email protected]" ,"Hello World form Python")) 
+0

가를 시도하지만 난 여전히 IO 오류를 가지고 필요하지 않습니다. 나는 그들이 특별한 규칙을 가지고 있지 않은지 확인하기 위해 gtalk에 대해서 테스트를했다. – crashekar

+0

보내기 존재가 처음이다 는 가 –

1

이 코드를 사용해보십시오. 나는 단순함을 위해 오류 조건을 처리하지 않았다.

import xmpp 

login = 'Your.Login' # @gmail.com 
pwd = 'YourPassword' 

jid = xmpp.protocol.JID(login) 
cl = xmpp.Client(jid.getDomain(), debug=[]) 
if cl.connect(('talk.google.com',5223)): 
    print "Connected" 
else: 
    print "Connectioned failed" 

if cl.auth(jid.getNode(), pwd): 
    cl.sendInitPresence() 
    cl.send(xmpp.Message("[email protected]" ,"Hello World form Python")) 
else: 
    print "Authentication failed" 


는 클라이언트 클래스의 생성자의 두번째 매개 변수 [] =를 디버깅 메시지를 끄 디버그를 전달하려면 :

cl = xmpp.Client(jid.getDomain(), debug=[]) 
+0

필립을 시도했지만 인증에 실패했습니다. 이것을 시도하기 전에 변경해야 할 설정이 있습니까? – crashekar

+1

이상한, 나는 위의 코드 스 니펫으로 다시 시도했지만 유효한 gmail 사용자 이름 ([email protected])과 암호와 함께 사용하고 예상대로 메시지를 보냈습니다. 이 (하위 집합) 코드는 매일 Linux 및 Windows 컴퓨터에서 봇으로 실행됩니다. Python 2.6 및 xmpppy-0.5.0rc1이 사용되었습니다. 로그인에 @ gmail.com 접미사가 포함되어 있는지 확인하십시오. –

+0

또한 비밀번호를 다시 확인하십시오. :) –

6

Here 그것이 my PyTalk client에서했던 방법이다.

userID에 @ gmail.com을 잊지 마세요.

5222 포트에서 talk.google.com에 연결해야한다고 생각합니다.

또한 auth에 대한 ressource를 지정하십시오. 그런데

import xmpp 
import sys 

userID = '[email protected]' 
password = 'YourPassword' 
ressource = 'Script' 

jid = xmpp.protocol.JID(userID) 
jabber  = xmpp.Client(jid.getDomain(), debug=[]) 

connection = jabber.connect(('talk.google.com',5222)) 
if not connection: 
    sys.stderr.write('Could not connect\n') 
else: 
    sys.stderr.write('Connected with %s\n' % connection) 

auth = jabber.auth(jid.getNode(), password, ressource) 
if not auth: 
    sys.stderr.write("Could not authenticate\n") 
else: 
    sys.stderr.write('Authenticate using %s\n' % auth) 

jabber.sendInitPresence(requestRoster=1) 
jabber.send(xmpp.Message("[email protected]" ,"Hello World form Python")) 

, 그것은 내가 당신이 작성해야 생각 필립 응답

1

에서 아주 가까이 보인다. 내가 xmpppy 0.5.0rc1와 파이썬 2.7에서 테스트하고 IT가 아주 좋은 일 : P를 :) :

import xmpp 

login = 'your [email protected]' # @gmail.com 
pwd = 'your pass' 
text='Hello worlD!' 
tojid='your friend @gmail.com' 



jid = xmpp.protocol.JID(login) 
cl = xmpp.Client(jid.getDomain(), debug=[]) 
if cl.connect(('talk.google.com',5223)): 
    print "Connected" 

else: 
    print "Connectioned failed" 

if cl.auth(jid.getNode(), pwd): 
    cl.sendInitPresence() 
    cl.send(xmpp.protocol.Message(tojid,text)) 
else: 
    print "Authentication failed"