频道管理
频道管理API,主要用于服务器端查询在线频道列表,查询在线频道详情,关闭频道,频道踢人等。
查询在线频道列表
这个API用于分页查询app内所有正在进行中的频道列表。
请求
GET /channel/list?page=1&pageSize=100
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
请求参数说明:
- page - 查询的页码,默认值为1。
- pageSize - 每个页面的频道数目,默认值为100,最大值为500。
响应
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
500 | 服务器内部错误 |
响应示例
200 OK
{
"page": 1, // int,当前页码
"pageSize": 100, // int,页面大小
"total": 5, // int,总频道数目
"channels": [
"HelloPano Channel1", // string,频道ID
"HelloPano Channel2",
"HelloPano Channel3",
"HelloPano Channel4",
"HelloPano Channel5"
]
}
查询在线频道详情
这个API只能查询正在进行中的频道详情,如果要查询已经结束的频道详情,请使用查询通话详情API。
请求
POST /channel/info
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"HelloPano" // string, 必填, 频道ID
}
响应
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在 |
500 | 服务器内部错误 |
响应示例
200 OK
{
"channelKey": "96172915556352512", // string, 当前通话全局唯一key
"mode": 1, // int, 频道模式, 0表示1对1, 1表示多人会议
"liveStreamCnt": 0, // int, 推流的路数, 0表示没有开启推流
"recordCnt": 0, // int, 录制的文件数量,0表示没有开启云端录制
"elapsedTime": 3600, // uint32, 频道已进行时长, 单位s
"users": [
{
"userId": "1", // string, 用户Id
"name": "user name1", // string, 用户名
"joinTime": "2019-09-09T20:18:25.384Z", // string, 用户加入时间, GMT时间
},
{
"userId": "2", // string, 用户Id
"name": "user name2", // string, 用户名
"joinTime": "2019-09-09T20:30:25.384Z", // string, 用户加入时间, GMT时间
},
],
"createTime": "2019-09-09T20:18:25.384Z", // string, 频道开始时间, GMT时间
}
关闭频道
请求
POST /channel/close
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"HelloPano" // string, 必填, 频道ID
}
响应
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在 |
500 | 服务器内部错误 |
频道踢人
请求
POST /channel/kick
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"HelloPano", // string, 必填, 频道ID
"kickList": ["1","2"] // string list, 必填, 用户ID列表
}
响应
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道/用户不存在 |
500 | 服务器内部错误 |
查询通话详情
请求
POST /channel/data
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
"channelId":"HelloPano", // string, 频道ID,与channelKey有一个必填
"channelKey":"56789012345" // string, 通话唯一标识,与channelId有一个必填
}
此API只能查询最近7天的通话详情,请在通话结束后7天内查询。
只有已经结束的通话可以使用此API查询,查询未结束的通话详情请使用查询在线频道详情API
- channelId - 同一个channelId可能在不同时间段产生了多条通话记录,当有多条记录时,此API将会返回所有记录,如果超过50条记录,则仅返回最近的50条记录。为了避免出现相同channelId对应多条通话记录的情况,可以在生成Token/加入频道时使用全局唯一的channelId。
- channelKey - Pano会给每一次通话分配一个全局唯一的key,传递了channelKey将返回唯一一条通话详情。
- 如果同时传递,则仅匹配channelKey,忽略channelId。
响应
状态码 | 说明 |
---|---|
200 | 请求成功处理 |
400 | 请求格式错误 |
401 | 认证错误 |
404 | 频道不存在 |
500 | 服务器内部错误 |
响应示例
200 OK
[
{
"channelId": "HelloPano",
"channelKey": "56789012345", // 全局唯一key
"startTime": "1585461203", // 会议开始时间,Unix时间戳,单位:秒
"endTime": "1585461223", // 会议结束时间,Unix时间戳,单位:秒
"duration": "20", // 会议时长,单位:秒
"participants": 3, // 参会人数
"attendees": [
{
"userId": "5",
"joinTime": "1585461203", // 首次入会时间,Unix时间戳,单位:秒
"leaveTime": "1585461206", // 最后离会时间,Unix时间戳,单位:秒
"duration": "3" // 在会议中的总时长,单位:秒
},
{
"userId": "6",
"joinTime": "1585461203",
"leaveTime": "1585461211",
"duration": "8"
},
{
"userId": "7",
"joinTime": "1585461203",
"leaveTime": "1585461223",
"duration": "20"
}
],
"recordings": [
{
"streamId": 1,
"fileKey": "67890123456"
},
{
"streamId": 2,
"fileKey": "67890123457"
}
]
},
... // 如果channelId对应了多条记录,则返回多条
]
响应数据说明:
- channelKey - Pano会给每一次通话分配一个全局唯一的key,同一个channelId在不同时间段产生了多条通话记录时,每条记录都有一个全局唯一的channelKey
- attendees/duration - 用户在会议中的总时长,用户可能会进出会议多次,因此在会议中的总时长可能不等于leaveTime减去joinTime
- recordings - 录制文件列表
- 如果查询时录制文件还没有全部生成,则仅返回已生成的录制文件信息
- 录制文件的生成取决于资源的空闲程度,通常在几分钟至2小时可以生成录制文件
- Pano仅要求同一个通话中正在进行的录制streamId唯一,如果你使用某个streamId开启录制后,然后结束录制,然后使用相同的streamId再次开启录制(可能录制不同的用户,使用不同的布局等),那么对于Pano而言这是两个不同的录制文件,在响应里将会返回2条记录,两条记录里的streamId相同fileKey不同,fileKey由Pano分配,全局唯一