当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd

Posted

技术标签:

【中文标题】当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd【英文标题】:How can I set an user with none affiliation directly to be a member when the user joins the room - Ejabberd 【发布时间】:2014-02-16 15:40:43 【问题描述】:

我正在自定义模块 mod_muc_room 以在用户第一次加入时自动将用户的从属关系设置为成员。

我正在研究方法 process_pressence,我设法在 mysql 表 mod_muc 的配置室中添加用户,但 StateData 不包含此更改....如何正确使此更改可用于 StateData。

我想知道一些指针。我已经尝试了很多方法黑客,但我似乎迷路了......提前谢谢

【问题讨论】:

【参考方案1】:

http://www.process-one.net/docs/ejabberd/guide_en.html#modmuc

default_room_options 中将members_by_default 设置为true 怎么样?


编辑:

我对角色和隶属关系感到困惑,请尝试以下补丁:

--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -1611,7 +1611,11 @@ add_online_user(JID, Nick, Role, StateData) ->
                           end,
                           [LJID], StateData#state.nicks),
     tab_add_online_user(JID, StateData),
-    StateData#stateusers = Users, nicks = Nicks.
+    StateData1 = case get_affiliation(JID, StateData) of
+        owner -> StateData;
+        _ -> set_affiliation(JID, member, StateData)
+    end,
+    StateData1#stateusers = Users, nicks = Nicks.

【讨论】:

moderate, true, members_by_default, true, members_only, false, allow_user_invites, false, password_protected, false, captcha_protected, false, password, [] , anonymous, true, logging, false, max_users, 200, allow_voice_requests, true, voice_request_min_interval, 1800, captcha_whitelist, [], affiliations, ["gallero", "dev .here.com", [], owner, []], subject, [], subject_author, []] | 2014-01-31 14:57:25 --------------- Muc 选项看起来像这些,但我需要参与者直接拥有会员隶属关系,无需所有者添加跨度> 如果可以自定义mod_muc_room.erl,想办法让Affiliation变成add_new_user()中的member。你可以找到优雅的方式,或者只是做Affiliation = member。我只是阅读了代码并提出了建议,没有进行测试。 对不起,我对角色和隶属关系感到困惑。我将编辑我的第一个答案。 我在做几乎相同的情况,但在处理新的存在后最后使用单独的方法,但这似乎有效!

以上是关于当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd的主要内容,如果未能解决你的问题,请参考以下文章

信令服务器房间设置

一次加入多个房间 Socket.io

如何让用户加入他们的多个房间 socket.io

没有关系的房间中的一对多关系

如何使用 Flask 和 Socket.io 加入和离开房间的简明示例?

按需获取房间聊天记录