2

我编写了一个机器人B,它接收来自客户端的消息C1并将其转发给客户端C2,即 2 人可以通过网关连接Bot

我正在使用Sleekxmpp,一个用于上述目的的 python 客户端 XMPP 库。

import logging

from sleekxmpp import ClientXMPP
from sleekxmpp.exceptions import IqError, IqTimeout

class EchoBot(ClientXMPP):

    def __init__(self, jid, password):
        ClientXMPP.__init__(self, jid, password)

        self.add_event_handler("session_start", self.session_start)
        self.add_event_handler("message", self.message)

    def session_start(self, event):
        self.send_presence()

    def message(self, msg):
        if msg['type'] in ('chat'):
            # receive message from the Client1
            from, to = message['from'], message['to']
            message = message['body']
            # send message to Client2. 
            self.send_message(mto=recipient,
                              mbody=message,
                              mtype='chat')

if __name__ == '__main__':
    xmpp = EchoBot('bot@example.com', 'password')
    xmpp.connect()
    xmpp.process(block=True)

现在客户端C2收到BOT消息的问题。它应该从客户端 C1 接收它。为此,我需要 C1 的密码来授权 C1,我在消息正文中没有它,在正文中发送密码也不安全。

创建网关 BOT 的最佳方法是什么?

4

1 回答 1

1

是的,您可以通过在 send_message() 方法中设置 mfrom = C1 将机器人设置为 C1 到 C2 的网关

于 2017-01-03T09:29:54.700 回答