JitsiMeet 中 Prosody 插件配置

在私有化部署 jitsi-meet 后,通过配置其中的 prosody 服务,可以实现更加多样化的功能,比如获取房间信息、获取房间用户信息、配置回调等等。

本文将简要介绍 prosody 插件系统,方便读者快速上手。

本文基于 docker 的安装方式来进行介绍

阅读本文时请保证有 JitsiMeet docker 部署及设置 jw 授权 相关知识作为前提。

简介

prosody 使用的插件为 lua 脚本,可用 lua 插件位于 jitsi-meet/resources/prosody-plugins,可以查看源代码理解其功能。

加载插件

prosody 的配置文件位于 prosody\rootfs\defaults\conf.d\jitsi-meet.cfg.lua 中。

插件注册

注册插件的格式如下,以 event_sync_component 为例:

1
2
3
Component "event_sync.{{ $XMPP_DOMAIN }}" "event_sync_component"
muc_component = "conference.{{ $XMPP_DOMAIN }}"
api_prefix = "http://127.0.0.1:7001/call-back/prosody"

注意:这个方式需要重新编译 prosody 镜像文件,如果觉得麻烦,可以使用第 3 节中的在 docker 中使用自定义插件

Component 介绍:

在 Lua 中,Component 是 Prosody XMPP 服务器中的一个模块,用于定义一个组件(component)。组件是一种特殊类型的 XMPP 实体,可以与其他 XMPP 实体进行通信,但是它们通常不具有完整的 XMPP 功能。组件通常用于扩展 XMPP 服务器的功能,例如添加聊天室、文件传输等功能。

Component 模块用于定义一个组件,并将其添加到 Prosody XMPP 服务器中。它接受一个 Lua 表作为参数,该表包含组件的配置信息。

在上例中,"event_sync.{{ $XMPP_DOMAIN }}" 表示注册的模块的名称,"event_sync_component" 表示组件的名称,组件名称为组件定义的文件名 mod_event_sync_component.lua 的中间部分。

插件变量

插件中通过 module:get_option("api_headers") 来获取 jitsi-meet.cfg.lua 中定义的变量。例:

1
2
3
4
local api_timeout = module:get_option("api_timeout", 20);
local api_headers = module:get_option("api_headers");
local api_retry_count = tonumber(module:get_option("api_retry_count", 3));
local api_retry_delay = tonumber(module:get_option("api_retry_delay", 1));

在 jitsi-meet.cfg.lua 中通过 “{{.Env.fieldName}}” 的方式来获取 .env 文件中定义的变量,注意引号不要丢。例:

1
external_service_secret = "{{.Env.TURN_CREDENTIALS}}";

特别注意:修改 jitsi-meet.cfg.lua 内容并不会生效,因为重启 docker 后会重置这个配置文件,该文件仅作为一个参考,仅在 .env 文件中的修改才会生效。

在 docker 中使用自定义的插件

若使用 docker 安装 jitsi-meet,每当 prosody 服务重启后都会重置 conf.d\jitsi-meet.cfg.lua 文件,因此无法在 jitsi-meet.cfg.lua 文件中通过 Component 的方式来注册插件。

可以使用以下的方法来解决:

  1. 将自定义插件保存到 .jitsi-meet-cfg\prosody\prosody-plugins-custom 目录中,这个目录被 prosody 所挂载
  2. 修改插件的源文件,使其中的参数符合自己的使用环境
  3. .env 文件中使用 XMPP_MUC_MODULES=event_sync_component 来启用 event_sync_component 插件

在 docker 中修改插件

使用 docker 安装后,如果需要修改 docker 中的 prosody 插件,可以通过以下步骤修改:

  1. 打开 docker,切换到【Container】,进入到 prosody 容器中

    image-20230627230120904
  2. 找到【Files/prosody-plugins】,找到想要修改的插件,双击修改并保存,然后重启容器即可应用修改

    image-20230627230335324

参考

jitsi-meet/resources/prosody-plugins at master · jitsi/jitsi-meet · GitHub

Third-Party Software | Jitsi Meet

jitsi-contrib/prosody-plugins: Prosody plugins for Jitsi (github.com)