我正在尝试使用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支持有关吗?
我的机器人仍然能够收到消息,但我的环聊应用程序未收到回复
答案 0 :(得分:4)
我能够解决这个问题。
您需要将typ = 'chat'
属性添加到xmpp.Message
connect_object.send(xmpp.Message( message_node.getFrom() ,message, typ='chat' ))
现在我的gTalkBot响应了我的消息来自环聊&amp; ichat客户端。
答案 1 :(得分:0)
如果您已延长sleekxmpp.ClientXMPP
,那么您可以通过将mtype='chat'
添加到send_message()
bot = MyBot([...])
bot.send_message(mto=JID,mbody=MSG,mtype='chat')