【问题标题】:Receive message of any user in python ejabberd using xmlrpc.client使用 xmlrpc.client 在 python ejabberd 中接收任何用户的消息
【发布时间】:2022-01-23 11:15:09
【问题描述】:

我在 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 用户发送消息无法在 python 中接收所有这些消息。如果收到的消息客户端应该连接并接收消息relatime。

谢谢

【问题讨论】:

    标签: python xmpp ejabberd xml-rpc


    【解决方案1】:

    您编写了一个 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 或您可能希望安装在其他机器上的任何其他服务器,或者在未来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-15
      • 2015-05-31
      • 2017-05-16
      • 2019-10-13
      • 2014-01-05
      • 2017-10-27
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多