Ejabberd - отправлять и получать сообщения через бот

Я написал бот B который получает сообщения от клиента C1 и передает его клиенту C2т.е. 2 человека могут подключаться через шлюз Bot,

Я использую Sleekxmpp, клиентскую библиотеку XMPP Python для вышеуказанной цели.

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?

1 ответ

Да, вы можете установить бота в качестве шлюза для C1-C2, установив mfrom = C1 в методе send_message()

Другие вопросы по тегам