Python上的XMPP响应Gtalk但不响应环聊

时间:2014-06-21 08:24:29

标签: python xmpppy

我正在尝试使用python和XMPP的Gtalk机器人。

当我使用iChat应用程序ping机器人时,我可以收到回复。 但是当我使用环聊进行ping操作时,我无法收到响应消息。但我仍然可以在服务器端日志中看到我的消息。

# -- coding: utf-8 -
import xmpp 

user="BOTUSERNAME@gmail.com"
password="PASSWORD"
server=('talk.google.com', 5223)

def message_handler(connect_object, message_node): 
        us = str(message_node.getFrom()).split('/')[0]
        if us == 'REALUSERNAME@gmail.com':
            us = us[0:4]
            print str(message_node)
            message = "Welcome to my first Gtalk Bot :) " + us
            s= str(message_node.getBody()).replace("\n", "\t")
            if s <> 'None' :
                print "MESSAGE: " + s
                connect_object.send(xmpp.Message( message_node.getFrom() ,message))

jid = xmpp.JID(user) 
connection = xmpp.Client(jid.getDomain()) 
connection.connect(server) 
result = connection.auth(jid.getNode(), password ) 

connection.RegisterHandler('message', message_handler)  
connection.sendInitPresence() 

while connection.Process(1): 
    pass

这与gtalk摆脱XMPP支持有关吗?

我的机器人仍然能够收到消息,但我的环聊应用程序未收到回复

2 个答案:

答案 0 :(得分:4)

我能够解决这个问题。

您需要将typ = 'chat'属性添加到xmpp.Message

connect_object.send(xmpp.Message( message_node.getFrom() ,message, typ='chat' ))

现在我的gTalkBot响应了我的消息来自环聊&amp; ichat客户端。

非常感谢stack overflow answer

答案 1 :(得分:0)

如果您已延长sleekxmpp.ClientXMPP,那么您可以通过将mtype='chat'添加到send_message()

来确保将消息发送到环聊
bot = MyBot([...])
bot.send_message(mto=JID,mbody=MSG,mtype='chat')