问题标签 [ejabberd-hooks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
323 浏览

xmpp - 在 ejabberd 中客户端连接突然丢失时消息丢失

我是 ejabberd 的新手。我的问题是当wifi连接突然丢失时,消息会丢失几秒钟。根据链接,我已启用 Stream Management 并将 resend_on_timeout 设置为 true 并使用 ping_interval: 10 启用 mod_ping 但我仍然缺少消息。
这里是端口 5222 设置
port: 5222 module: ejabberd_c2s certfile: "/home/salu/ejabberd-16.09/conf/server.pem" starttls: true stream_management: true resend_on_timeout: true ## To enforce TLS encryption for client connections, ## use this instead of the "starttls" option: ## starttls_required: true ## ## Custom OpenSSL options ## protocol_options: - "no_sslv3" ## - "no_tlsv1" max_stanza_size: 65536 shaper: c2s_shaper access: c2s

和 mod_ping 设置
mod_ping: send_pings: true ping_interval: 10 timeout_action: kill 谁能告诉我是什么问题我该如何解决这个问题?

0 投票
0 回答
184 浏览

erlang - 从 Muc Hooks 获取房间名称或主题

我想从其中一个 ejabberd 挂钩中获取房间的名称或主题。我有一个类似下面代码的方法,我想在该方法中获取房间的名称或主题。这样的事情可能吗?

谢谢

0 投票
1 回答
236 浏览

ejabberd - jabbered 17.01 离线消息挂钩给出错误

我正在尝试为 ejabberd 17.01 编写模块。它一直在开发 ejabberd 16.08。

我用包安装程序安装了 ejabberd。

我在日志中收到以下错误

=====================================

2017-02-09 05:36:45.825 [错误] <0.660.0>@ejabberd_hooks:run1:332 {undef,[{mod_offline_test,on_offline,[{jid,<<"FROM-JID">>,<<"我的服务器名称">>,<<"资源">>,<<"FROM-JID">>,<<"我的服务器名称">>,<<"资源">>},{jid ,<<"TO-JID">>,<<"MY-SERVER-NAME">>,<<>>,<<"TO-JID">>,<<"MY-SERVER-NAME">>, <<>>},{消息,<<"B094705E-3F0B-4AA2-9630-C5A6DEEE7033">>,聊天,<<>>,{jid,<<"FROM-JID">>,<<"MY-服务器名">>,<<"资源">>,<<"FROM-JID">>,<<"我的服务器名">>,<<"资源">>},{jid,<<"TO-JID">>,<<"MY-SERVER-NAME">>,<<>>,<<"TO-JID">>,<<"MY -SERVER-NAME">>,<<>>},[],[{text,<<>>,<<"Rrrrrrr">>}],未定义,[],#{}}],[]} ,{ejabberd_hooks,safe_apply,3,[{file,"src/ejabberd_hooks.erl"},{line,382}]},{ejabberd_hooks,run1,3,[{file,"src/ejabberd_hooks.erl"},{ line,329}]},{ejabberd_sm,route,3,[{file,"src/ejabberd_sm.erl"},{line,126}]},{ejabberd_local,route,3,[{file,"src/ejabberd_local .erl"},{line,110}]},{ejabberd_router,route,3,[{file,"src/ejabberd_router.erl"},{line,87}]},{ejabberd_c2s,check_privacy_route,5,[{文件,"src/ejabberd_c2s.erl"},{line,1886}]},{ejabberd_c2s,session_established2,2,[{file,"src/ejabberd_c2s.erl"},{line,1170}]}]} 运行钩子:{offline_message_hook,[{jid,<<"FROM-JID">>,<<"MY-SERVER-NAME">>,< <"RESOURCE">>,<<"FROM-JID">>,<<"MY-SERVER-NAME">>,<<"RESOURCE">>},{jid,<<"TO-JID">> ,<<"我的服务器名称">>,<<>>,<<"TO-JID">>,<<"我的服务器名称">>,<<>>},{消息,< <"B094705E-3F0B-4AA2-9630-C5A6DEEE7033">>,聊天,<<>>,{jid,<<"FROM-JID">>,<<"MY-SERVER-NAME">>,<<"资源">>,<<"FROM-JID">>,<<"MY-SERVER-NAME">>,<<"资源">>},{jid,<<"TO-JID">>,<<"MY-SERVER-NAME">>,<<>>,<<"TO-JID">>,<<"MY-SERVER-NAME">>,< <>>},[],[{文本,<<>>,<<"Rrrrrrr">>}],未定义,[],#{}}]}

=====================================

0 投票
2 回答
143 浏览

erlang - 未调用预期的 Ejabberd filter_packet 函数

我正在使用的 ejabberd 模块 mod_pottymouth 没有按预期过滤消息。添加日志记录后,我看到调用了一个通用处理程序方法,而不是执行实际过滤的方法。问题是,我无法解析 ejabberd 消息以确保调用正确的函数。任何人都可以帮忙吗?

这是使用 ejabberd 17.01

0 投票
1 回答
368 浏览

erlang - 如何使用 ejabberd 注册模块进行自定义登录

我是 ejabberd 和 erlang 的新手,并创建了一个基本应用程序,首先检查用户是否登录。所以基本上它会检查登录的 mnesia 表并确认这一点。

现在我看到 ejabberd 也有一个用户注册过程,ejabberdctl register username host password因为我使用 sql 身份验证,所以我看到有一个名为的表users,其中存储了所有用户和密码。

我想知道这些值如何存储在那里的序列流,并希望使用它将这些值推username and password送到我的 mnesia 表中以进行登录。

我查看了 ejabberd 开发人员指南,发现 mod_register 处理新用户的注册,但我无法准确追踪其中使用了什么函数来完成所有程序。

我正在使用将信息消息写入日志的方法。有人可以帮我吗?提前致谢。

0 投票
1 回答
54 浏览

ejabberd - 握手如何在 ejabberd 服务器中进行

我刚刚开始使用 ejabberd 作为消息服务器。现在我已经读到 TCP 连接遵循握手方法来建立连接,我想知道每当任何客户端说 Pidgin 客户端发送连接请求时,ejabberd 是如何遵循握手方法的。

这可能是一个非常基本的问题,但是在努力寻找它之后,我并没有取得太大的成功。

谁能给我解释一下。

0 投票
1 回答
120 浏览

erlang - Ejabberd - 使用挂钩时未找到 undef 模块

我正在学习使用Hooks来构建 Ejabberd 模块。是我指的教程。以下是我的代码:-

我正在接收并记录收到的数据包(使用user_receive_packetHook),但它会引发错误。以下是错误:-

我到底错在哪里?

更新

查看在其中一个ejabberd 模块中编写的钩子,它清楚地表明钩子函数将只有 1 个参数。因此,我更新了我的代码如下: -

但是当我收到一个数据包时,它会抛出一个错误:-

请提供您的宝贵意见。

0 投票
1 回答
490 浏览

erlang - Ejabberd - 在 offline_message_hook 中将消息路由给用户

我想构建一个客户支持聊天应用程序。有users和一个admin。在 admin 下面有multiple sub-admins. 最初聊天仅由管理员发起,但如果管理员离线,我需要将消息路由给子管理员。

offline_message_hook钩子达到目的。我会检查是否To是管理员,然后我需要将其路由Packet到其中一个子管理员。如何将数据包路由/发送给offline_message_hook. 简而言之,如何更改To数据包以便将数据包重定向到新的子管理员?

这是我尝试过的: -

我正在使用ejabberd 17.04.105.

更新

在遵循user2610053的建议后,我这样做了:-

以下是错误:-

用户praful@localhost存在。请指教到底出了什么问题?

Update2 - `UserReceivePacket 挂钩

user_receive_packet数据包挂钩中,使用相同的函数ejabberd_router:route(xmpp:set_to(Packet, jid:decode("praful@localhost"))), 时会抛出一个错误:-

所以,我读到了function_clause,但无法理解。这里到底出了什么问题?

0 投票
1 回答
192 浏览

xmpp - 收件人在 Ejabberd 中突然断开连接时消息丢失

由于某些网络问题,收件人突然从 INTERNET 断开连接时消息丢失。在这种情况下,我想停止消息丢失。

示例:用户 A 和 B 在线并正在聊天。A向B发送消息。然后突然用户B失去了INTERNET连接,同时用户A仍在向B发送消息。服务器假设B仍然在线,因为不知道B有网络问题。

我正在使用 Ejabberd 16.08 。请提出如何解决此问题的方法。

0 投票
1 回答
391 浏览

xml - 如何在 ejabberd 中的 xmpp 消息正文中附加自定义数据

我已经使用 Pidgin 和 Ejabberd 建立了一个聊天设置。我在 ejabberd 中使用以下方法编写了一个自定义模块user_send_packet

myMessage函数如下:

基本上,这个函数的作用是,每当有人发送聊天消息说“你好”时,Sum都会计算并在服务器及其日志上打印的值,并将“你好”的消息发送给第二个用户。

但是现在我想将 的值Sum与消息一起发送"hello there"给第二个用户,例如:

谁能帮我解决这个问题?

提前致谢。