【问题标题】:writing custom namespace IQ stanza in ejabberd using xmpp library使用 xmpp 库在 ejabberd 中编写自定义命名空间 IQ 节
【发布时间】:2018-07-15 04:31:56
【问题描述】:

我几乎将 ejabberd 从 16.02 更新到 18.01。主要问题是我在旧版本中开发的模块无法正常工作,因为在旧版本的 ejabberd 中没有使用 xmpp 库(而不是使用 jlib),所以 iq 记录定义已经改变..我没有知道如何在 xmpp 库中添加我的自定义命名空间

【问题讨论】:

  • 这并不容易而且很无聊,你应该在 xmpp_codec:get_mode/3 中添加新的子句,并添加新的模块来解码和编码你的 xml。
  • 昨天我尝试制作自己的 xmpp 规范。我用 xmpp:register_code(conversation) 注册了我的规范模块,但在重新启动 ejabberd 后出现严重错误
  • @BekaGelashvili 我正在使用我的 ejabberd iq 处理程序模块解决此处描述的类似问题 [stackoverflow.com/questions/50208545/…。你能帮帮我吗?

标签: erlang xmpp ejabberd


【解决方案1】:

您可以通过在 eJabberd 中添加新插件来添加自定义命名空间。

请按照以下步骤操作:

  1. 使用define 宏在jlib.hrl 中添加您的自定义命名空间。
  2. 在 eJabberd 中创建一个新的插件模块,可以引用 mod_ping
  3. 修改ejabberd.cfgmodules 部分以启用您的插件。

请记住在您的插件启动时使用gen_iq_handler:add_iq_handler 注册您的插件。

如果您想添加可以协商的功能,您必须使用mod_disco:register_feature 注册您的插件。

【讨论】:

  • 感谢重播。我已经按照您的描述完成了它,并且我的模块运行良好..(顺便说一下,jlib.hrl 在最新的 ejabberd 中被贬低了)。我必须使用 xmpp 而不是 jlib,因为我包含了一些 ejabberd hrls,因此包含 xmpp.hrl,所以 jlib.hrl 和 xmpp.hrl 之间存在冲突。
猜你喜欢
  • 2013-10-19
  • 2014-05-13
  • 2023-04-11
  • 2012-06-03
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多