房间状态同步
「房间状态同步」是实时音视频产品提供的一项服务端回调服务,具体提供以下能力:
- 将音视频房间状态变化按照指定的时间间隔通知您的 App 服务器。
- 将呼叫双方、会议成员或直播房间中主播角色用户触发的事件通知您的 App 服务器。具体事件可参见下文的 event 字段(房间事件类型)。
注意
直播模式房间中观众角色的操作事件不会触发事件回调。
开通服务
您可以前往音视频通话页面,配置房间状态同步回调地址。注意回调地址必须是公网可访问的 URL。具体步骤如下:
-
确认当前 App Key 已开通音视频服务。如果您拥有多个应用,注意先选择应用名称。每个应用都提供用于隔离生产和开发环境的两套独立 App Key / Secret。应用时,请注意选择正确的环境(开发 / 生产)。
如果您尚未向融云申请应用上线,仅可使用开发环境。
-
如果已处于音视频通话页面,可下拉页面,找到服务配置,切换到基本设置,并填写房间状态同步回调地址。
回调地址示例:
http(s)://your.app.server/any-url-path
如果需要选择版本,请选择 1.1 (1.0 版本已不再维护)。
配置后 30 分钟后生效。
配置完成后,您的 App 内所有音视频房间的任何状态变更,均会通过 HTTP 请求,实时回调您的服务器,如:音视频房间的创建、销毁、用户(不含观众角色)的加入与退出、发布音频或视频资源。
回调方法
POST:<your-receiving-server-url>
数据格式:application/json
回调地址 <your-receiving-server-url>
是您在控制台为当前 App Key 和服务所配置的回调接收地址。请务必配置可正常访问的回调接收地址。如果您的网络有 IP 访问限制,请务必配置 IP 白名单,否则无法正常接收服务端回调。
为了验证数据有效性并确保调用者为融云 Server,每个请求前添加数据签名。回调签名规则详见服务端回调。
回调正文参数
该回调服务的 HTTP 请求正文数据格式为 application/json
,包含具有以下结构的 JSON 对象:
名 称 | 类型 | 说明 |
---|---|---|
appKey | String | 当前在使用的 App Key。 |
roomId | String | 当前的音视频房间 ID,即客户端 SDK 加入/创建音视频房间时传入的房间 ID。 |
sessionId | String | 当前音视频房间的唯一标识,由音视频服务端生成。 |
userId | String | 当前事件的用户 ID。 |
event | Number | 事件类型,与房间模式有关。详细说明请参见下文房间事件类型。 |
exitType | Number | 在 event 字段为 12 时,exitType 表示呼叫双方(主叫、被叫)、会议成员或主播退出房间的原因。1:主动离开房间; 2:被踢出房间; 3:断网超时被移出房间(如果融云服务端在客户端用户离线后 1 分钟之内未收到客户端的心跳信令,则将该用户踢出房间); 4:多端登陆时被踢。 在 event 字段不为 12 时,exitType 默认为 0。 |
timestamp | Number | 当前事件发生的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数。 |
extra | Object | 业务侧为当前房间设置 的自定义房间属性。 |
data | Object | SDK 内部为当前房间设置的房间属性。 |
audience | Array | 仅在同步房间内瞬时状态信息时(event 字段为 1),回调中包含观众(audience )参数。观众的用户 ID 列表,按照加入时间排序得前 500 名。 |
durationTime | Number | event 字段为 12 时,durationTime 表示该会议成员或主播单次房间进出累计时长(毫秒)。event 字段为 3 时,durationTime 表示房间总时长(毫秒)。 |
members | Array | 用户资源信息,即呼叫双方(主叫、被叫)、会议成员或主播发布的所有资源的信息。event 字段为 1 时,members 包含全量用户资源信息列表。event 字段为其他事件时,members 只包含对应事件中增量的用户资源信息。如 user1 资源发布,那 members 里的信息只有 user1 的资源信息。 |
members[i].userId | String | 用户 ID。 |
members[i].joinTime | Number | 对应用户加入房间的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数。 |
members[i].data | Object | 用户发布的资源信息。 |
members[i].data.role | String | 一对一通话中的主叫、被叫身份,仅适用于使用音视频呼叫 SDK(CallLib SDK/CallPlus SDK/CallKit)发起的一对一通话。RC_CallInvter 表示用户身份为主叫。RC_CallInvitee 表示用户身份为被叫。 |
members[i].data.uris | Array | 用户资源信息列表,详情见下面说明。 |
members[i].data.uris[i].mediaType | Number | 音视频资源的类型。0: 音频。1: 视频 |
members[i].data.uris[i].msid | String | 音视频资源的 Stream ID。 |
members[i].data.uris[i].uri | String | 音视频资源的全网唯一 URI。您不需要关心其字符串构成。 |
members[i].data.uris[i].tag | String | 客户端在发布资源时指定的标签信息,用于标识不同的流。默认的音视频 Tag 为 RongCloudRTC 。 |
members[i].data.uris[i].state | Number | 音视频资源的状态。0: 关闭。1: 开启。 |
members[i].extra | Object | 由客户端 SDK 为当前用户设置的人员属性。 |