2017-01-02 2 views
2

Я написал бота B, который принимает сообщения от клиента C1 и направляет его клиенту C2, т.е. 2 человека могут подключаться через шлюз Bot.Ejabberd - Отправить и Прием сообщений с помощью 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('[email protected]', 'password') 
    xmpp.connect() 
    xmpp.process(block=True) 

Теперь проблема, с которой Клиент C2 получает сообщение от BOT. Он должен скорее получить его от клиента C1. Чтобы это произошло, мне нужен пароль C1 для авторизации C1, который у меня нет в теле сообщения, и он не защищен для отправки пароля в теле.

Каков наилучший подход для создания шлюза BOT?

ответ

1

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

Смежные вопросы