问题标签 [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.
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
谁能告诉我是什么问题我该如何解决这个问题?
erlang - 从 Muc Hooks 获取房间名称或主题
我想从其中一个 ejabberd 挂钩中获取房间的名称或主题。我有一个类似下面代码的方法,我想在该方法中获取房间的名称或主题。这样的事情可能吗?
谢谢
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">>}],未定义,[],#{}}]}
=====================================
erlang - 未调用预期的 Ejabberd filter_packet 函数
我正在使用的 ejabberd 模块 mod_pottymouth 没有按预期过滤消息。添加日志记录后,我看到调用了一个通用处理程序方法,而不是执行实际过滤的方法。问题是,我无法解析 ejabberd 消息以确保调用正确的函数。任何人都可以帮忙吗?
这是使用 ejabberd 17.01
erlang - 如何使用 ejabberd 注册模块进行自定义登录
我是 ejabberd 和 erlang 的新手,并创建了一个基本应用程序,首先检查用户是否登录。所以基本上它会检查登录的 mnesia 表并确认这一点。
现在我看到 ejabberd 也有一个用户注册过程,ejabberdctl register username host password
因为我使用 sql 身份验证,所以我看到有一个名为的表users
,其中存储了所有用户和密码。
我想知道这些值如何存储在那里的序列流,并希望使用它将这些值推username and password
送到我的 mnesia 表中以进行登录。
我查看了 ejabberd 开发人员指南,发现 mod_register 处理新用户的注册,但我无法准确追踪其中使用了什么函数来完成所有程序。
我正在使用将信息消息写入日志的方法。有人可以帮我吗?提前致谢。
ejabberd - 握手如何在 ejabberd 服务器中进行
我刚刚开始使用 ejabberd 作为消息服务器。现在我已经读到 TCP 连接遵循握手方法来建立连接,我想知道每当任何客户端说 Pidgin 客户端发送连接请求时,ejabberd 是如何遵循握手方法的。
这可能是一个非常基本的问题,但是在努力寻找它之后,我并没有取得太大的成功。
谁能给我解释一下。
erlang - Ejabberd - 使用挂钩时未找到 undef 模块
我正在学习使用Hooks来构建 Ejabberd 模块。这是我指的教程。以下是我的代码:-
我正在接收并记录收到的数据包(使用user_receive_packet
Hook),但它会引发错误。以下是错误:-
我到底错在哪里?
更新
查看在其中一个ejabberd 模块中编写的钩子,它清楚地表明钩子函数将只有 1 个参数。因此,我更新了我的代码如下: -
但是当我收到一个数据包时,它会抛出一个错误:-
请提供您的宝贵意见。
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
,但无法理解。这里到底出了什么问题?
xmpp - 收件人在 Ejabberd 中突然断开连接时消息丢失
由于某些网络问题,收件人突然从 INTERNET 断开连接时消息丢失。在这种情况下,我想停止消息丢失。
示例:用户 A 和 B 在线并正在聊天。A向B发送消息。然后突然用户B失去了INTERNET连接,同时用户A仍在向B发送消息。服务器假设B仍然在线,因为不知道B有网络问题。
我正在使用 Ejabberd 16.08 。请提出如何解决此问题的方法。
xml - 如何在 ejabberd 中的 xmpp 消息正文中附加自定义数据
我已经使用 Pidgin 和 Ejabberd 建立了一个聊天设置。我在 ejabberd 中使用以下方法编写了一个自定义模块user_send_packet
:
myMessage函数如下:
基本上,这个函数的作用是,每当有人发送聊天消息说“你好”时,Sum
都会计算并在服务器及其日志上打印的值,并将“你好”的消息发送给第二个用户。
但是现在我想将 的值Sum
与消息一起发送"hello there"
给第二个用户,例如:
谁能帮我解决这个问题?
提前致谢。