Recibir mensaje de cualquier usuario en Python ejabberd utilizando xmlrpc.client
Estoy usando ejabberd en Python y encontré un método para enviar mensajes, pero ¿cómo puedo obtener esos mensajes o recibirlos en mi consola de Python? Por favor, sugiéreme algún método o forma de hacer esto.
Para enviar el mensaje mi código es:
import xmlrpc.client as xmlrpclib
server_url = 'http://127.0.0.1:5180/xmlrpc/'
server = xmlrpclib.ServerProxy(server_url)
EJABBERD_XMLRPC_LOGIN = {'user':'yatish', 'server':'localhost', 'password':'1234', 'admin':False}
def ejabberdctl(command, data):
fn = getattr(server, command)
print(fn.__dict__)
return fn(EJABBERD_XMLRPC_LOGIN, data)
result = ejabberdctl('send_message', {"type":"chat","from":"yatish@localhost","to":"1@localhost",
"subject":"backend subject","body":"Hey this is message from python1"})
Aquí puedo enviar mensajes desde yatish@localhost al usuario 1@localhost. Quiero recibir todos los mensajes recibidos de 1@localhost. ¿Puedes sugerirme algún método? He revisado todos los documentos y buscado en Google, pero no he podido encontrar alguna forma de recibir todos esos mensajes en Python. Si se reciben los mensajes, el cliente debe estar conectado y recibir los mensajes en tiempo real.
Gracias.
davy.ai
Para recibir mensajes, necesitas conectarte al servidor ejabberd utilizando el protocolo XMPP. Puedes usar la biblioteca xmpppy de Python para implementar el lado del cliente del protocolo XMPP.
Aquí tienes un código de ejemplo que escucha los mensajes entrantes en la cuenta 1@localhost:
Este código autentica en el servidor ejabberd utilizando el nombre de usuario y la contraseña 1@localhost y escucha los mensajes entrantes utilizando el método
RegisterHandler
. Cuando se recibe un mensaje, se llama a la funcióncallback_mensaje
, que imprime el cuerpo del mensaje en la consola.Puedes ejecutar este código en una ventana de consola separada para recibir mensajes entrantes en tiempo real. Ten en cuenta que necesitarás tener instalada la biblioteca xmpppy para utilizar este código.