【问题标题】:Issues in converting the mod_confirm_delivery module for newer binarized ejabberd versions将 mod_confirm_delivery 模块转换为较新的二进制 ejabberd 版本的问题
【发布时间】:2015-09-15 20:06:48
【问题描述】:

我尝试制作一个托管在以下位置的模块:

https://github.com/johanvorster/ejabberd_confirm_delivery

我使用的是 ejabberd 版本 14.07。

我所做的改变:

1. Removed all the ?INFO_MSG statements
2. binarised all the strings. Every occurence of "abc" has been replaced by <<"abc">> and so on.

还需要什么? 我已经能够很好地编译模块但是它不起作用。

输入? 如果项目分支上的任何人都可以根据较新版本的 ejabberd 更新 git 项目,那就太好了。

每当连接到 saya 组的每个客户端收到服务器发送的消息时,我都打算从他们那里接收 xmpp 节。

谢谢

【问题讨论】:

  • 你从来没有解决过这个问题吗?

标签: github erlang xmpp ejabberd erl


【解决方案1】:

我认为这个模块会为 mod_confirm_delivery.erl 中的 send_packet 函数生成 undef 错误。检查您的错误登录:

//var/log/ejabberd/ejabberd.log

在这个模块中:

ejabberd_hooks:add(user_send_packet, _Host, ?MODULE, send_packet, 50),

这个 Hook 正在调用 mod_confirm_delivery:send_packet/4 函数,但在你的模块中 send_packet/4 没有定义。因此,您必须更新代码以匹配 user_send_packet 挂钩的新签名,即:

user_send_packet(Packet, C2SState, From, To) -> 数据包

点击链接:https://docs.ejabberd.im/developer/hooks/

【讨论】:

  • 当我像这样使用 ejabberd_hooks:add(user_send_packet(Packet, C2SState, From, To) -> Packet) 时出现错误,
  • 这是调用钩子的错误方式,只需替换您在钩子中使用的函数即可。即 send_packet(From, To, Packet) 到 send_packet(Packet, C2SState, From, To)。并在 export 中使用 send_packet/4。
  • @ManiKandan 你从来没有解决过这个问题吗?我正在尝试将 johnavorster 代码与 Ejabberd 16.03 一起使用
猜你喜欢
  • 2017-03-15
  • 1970-01-01
  • 2011-12-25
  • 2021-05-08
  • 2020-06-04
  • 2017-03-28
  • 2014-11-02
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多