JitsiMeet 使用 Docker 私有化部署获取事件回调
私有化部署 jitsi-meet 后,可以通过 prosody 服务的
event_sync_component
插件来向指定服务器回调事件。
该插件支持的事件有:
- 房间创建
- 房间释放
- 用户加入
- 用户退出
简介
当事件被触发后,该组件将会向指定的外部 API 发送 Post 请示,请求体为 Json 格式。
如果使用 JWT token 认证的话,同时还会发送 token 中 context 中的 name,email 和 id。
安装
本文通过 docker 的方式安装的 jitsi-meet,这种安装方式不支持通过
Component
的方式手动注册插件,也无法添加额外的配置变量。因此需要改动插件的源代码,使其符合自己的使用需求
下载插件
1 | # 打开 powershell |
修改插件
可以使用 vscode 远程服务器后,安装 Docker 插件对容器进行对文件进行修改
修改变量
由于prosody镜像的原因,导致无法直接配置 prosody 变量,因此为了能够可以使用插件,打开插件源代码,对里面的部分定义进行修改,内容如下:
1
2
3
4-- 为 prosody 虚拟机环境的地址,一般都为 muc.meet.jitsi
local main_muc_component_host = "muc.meet.jitsi";
-- 将其修改成回调服务器地址即可
local api_prefix = "http://192.168.3.240:7001/api/v1/callbacks";返回 display_name
原插件没有返回用户的 display_name,当用户通过网址进入时,无法确定用户的身份,因此需要返回用户自己设置的 display_name 供回调服务器处理。
修改 occupant_joined:
1
2
3
4
5-- 找到 occupant_joined 函数
-- 将
local occupant_data = room_data:on_occupant_joined(occupant_jid, event.origin);
-- 修改为
local occupant_data = room_data:on_occupant_joined(occupant_jid, event);修改 EventData:on_occupant_joined:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25-- 找到 EventData:on_occupant_joined 函数,修改为如下代码:
function EventData:on_occupant_joined(occupant_jid, event)
local event_origin = event.origin
local user_context = event_origin.jitsi_meet_context_user or {};
-- get displayName
local display_name = event.occupant:get_presence():get_child_text('nick', 'http://jabber.org/protocol/nick');
-- N.B. we only store user details on join and assume they don't change throughout the duration of the meeting
local occupant_data = {
occupant_jid = occupant_jid,
name = user_context.name,
id = user_context.id,
email = user_context.email,
joined_at = now(),
left_at = nil,
display_name = display_name
};
self.occupants[occupant_jid] = occupant_data;
self.active[occupant_jid] = true;
return occupant_data;
end
加载插件
向 .env
文件中的 XMPP_MUC_MODULES
添加
event_sync_component
,使该组件生效:
1 | XMPP_MUC_MODULES=muc_census,muc_size,event_sync_component |
重新创建容器
1 | docker-compose up -d |
至此,事件回调插件加载成功。
参考
Get callbacks on my custom server - Developers - Jitsi Community Forum - developers & users
prosody-plugins/event_sync/README.md at main · jitsi-contrib/prosody-plugins · GitHub