2

我正在尝试使用 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 支持有关吗?

我的 Bot 仍然能够接收消息,但我的环聊应用程序没有收到响应

4

2 回答 2

4

我能够解决这个问题。

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

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

现在我的 gTalkBot 会回复我来自环聊和 ichat 客户端的消息。

非常感谢这个堆栈溢出答案

于 2014-06-23T11:00:59.703 回答
0

如果您已扩展sleekxmpp.ClientXMPP,则可以通过添加到来确保将消息发送到环mtype='chat'send_message()

bot = MyBot([...])
bot.send_message(mto=JID,mbody=MSG,mtype='chat')
于 2016-01-05T10:14:42.870 回答