如何在 Ejabberd 中启用基于角色的用户聊天

Posted

技术标签:

【中文标题】如何在 Ejabberd 中启用基于角色的用户聊天【英文标题】:How to enable Role based user chat in Ejabberd 【发布时间】:2018-10-11 07:14:06 【问题描述】:

如何在网络应用中实现基于角色的聊天系统。 例如。 SuperAdmin 可以与组织中的任何人沟通。 管理员只能与潜在客户交流。 潜在客户只能与管理员及其团队交流。 审核员可以与各自的主管及其团队用户进行沟通。 用户只能与各自的审计员交流。

【问题讨论】:

【参考方案1】:

我猜以前没有人尝试过的一个想法:

    使用 mod_shared_roster 定义不同的用户组和团队。 然后为每个组定义不同的acl shared_group,见https://docs.ejabberd.im/admin/configuration/#acl-definition 安装mod_filter from ejabberd-contrib,并将不同的组配置为仅允许根据您的设计向其他组发送消息。

免责声明:我不知道这是否可能,正如我所说,我怀疑以前是否有人这样做过,因为我提到的内容使用了最近可用的功能。如果您尝试并最终使其正常工作,那么如果您在此处添加评论以显示您是如何完成这项伟大任务的,那就太好了。祝你好运! :)

【讨论】:

【参考方案2】:

恐怕没有简单的方法可以做到这一点 - 没有任何现成的 XMPP XEP。每个人都可以向每个人发送消息。

也许您可以在客户端应用程序中构建此逻辑。例如。为您的用户分配不同的标签(superadmin/admin/lead/),然后在聊天之前决定两个用户都有什么标签,他们是否可以交流。

关于 XMPP 角色 - 只有群聊上下文中的角色。 https://xmpp.org/extensions/xep-0045.html 。群聊中的用户具有不同的角色/权限。

【讨论】:

【参考方案3】:

我确实有一个类似的问题,那就是我希望我的用户只能与他们各自名册中的人交谈。因此,如果两个用户 A 都有用户 B,并且用户 B 在他的名册中有用户 A,则用户 A 只能向用户 B 发送消息。你知道是否可以使用 mod_filter 来实现? (我对 ejabberd 还很陌生)

【讨论】:

以上是关于如何在 Ejabberd 中启用基于角色的用户聊天的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ejabberd 服务器中启用流管理?

在 ejabberd 服务器中启用流管理

如何在 ejabberd 上为 muc(多用户聊天)设置不同的消息间隔?

如果我使用 Ejabberd 身份验证和 JWT,我不需要注册用户吗?

如何使用 ejabberd 聊天应用程序通过 API 层传递服务器

操作无法完成。 (kCFStreamErrorDomainSSL 错误 -9847。)使用 xmpp 聊天在 ejabberd 中注册新用户时