2017-01-02 1 views
2

Ich habe einen Bot B geschrieben, die Nachrichten von dem Client empfängt C1 und leitet sie an Client C2, dh 2 Personen über das Gateway Bot verbinden können.Ejabberd - Senden und Empfangen von Nachrichten über Bot

Ich verwende Sleekxmpp, eine Python-Client-XMPP-Bibliothek für den obigen Zweck.

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) 

Jetzt das Problem, dass Client C2 die Nachricht von der BOT empfängt. Es sollte es lieber von Client C1 erhalten. Um das zu tun, brauche ich ein Passwort von C1, um C1 zu autorisieren, das ich nicht im Nachrichtentext habe, und es ist auch nicht sicher, ein Passwort im Körper zu senden.

Was ist der beste Ansatz, um ein Gateway BOT zu erstellen?

Antwort

1

Ja, Sie können einen Bot als Gateway für C1 zu C2 setzen, indem Sie in der Methode send_message()

mfrom = C1 setzen
Verwandte Themen