使用 xmlrpc.client 在 python ejabberd 中接收任何用户的消息

Receive message of any user in python ejabberd using xmlrpc.client

我在 python 中使用 ejabberd,我找到了一种发送消息的方法,但是如何在我的 python 控制台中获取消息或接收这些消息,请给我一些方法或途径这样做。

发送消息我的代码是

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"})

这里我可以从 yatish@localhost 向 1@localhost 用户发送消息我想获取 1@lcoalhost 收到的所有消息,你能给我一些建议吗我已经检查了所有文档和 google 在我身边,但无法在 python 中收到所有这些消息。如果收到消息,客户端应该连接并接收 relatime 消息。

谢谢

您编写了一个 XMLRPC 客户端来使用 ejabberd 的“send_message”管理命令来执行此任务。

但是在 ejabberd 中没有任何管理命令来检查或读取 XMPP 消息。

我建议您采用不同的方法:忘记使用 XMLRPC 或 ejabberd 命令。相反,编写一个小型 XMPP 客户端(在 python 中有相应的库,请参阅 https://xmpp.org/software/libraries/)。

您的 XMPP 客户端应该:

  1. 登录 FROM 帐户
  2. 发送消息
  3. 注销

然后再写一个小客户端

  1. 登录到 TO 帐户,其中包含一个在线状态号码
  2. ejabberd 会立即将存储的离线消息发送给他
  3. 对这些消息做任何事情,然后注销

如果您能够用您喜欢的语言(Python 或其他语言)编写这些 XMPP 客户端,您可以将这些客户端与任何 XMPP 服务器一起使用:ejabberd,或您可能想要安装的任何其他服务器其他机器,或者将来。