中控HTTP API鉴权说明
由于添加了鉴权机制,需要先执行鉴权流程,成功后拿到token,后续接口调用附上该token校验。
token 有效期为 2 小时。
以POST形式请求鉴权,附带password参数(值为请求的设备的admin密码):
POST /centralcontrol/authentication
{
"password": "0000"
}
若请求且校验成功,会获取到一串token:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"status":200,
"data":
{
"token":"6118C27AAC154D79BFC955A4F63E3C42"
}
}
1. token使用方式
获取到的token字段填在https请求头中的 "Authorization" 字段内作为认证校验字段值:
User-Agent: PostmanRuntime-ApipostRuntime/1.1.0
Cache-Control: no-cache
content-type: application/json
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Authorization: Bearer 6118C27AAC154D79BFC955A4F63E3C42
Content-Length: 27
后续所有请求都需要带上该token才能校验成功并执行对应功能,若访问的是app相关的接口需要带上app名称参数,以Apipost软件为例:
2. 业务鉴权失败
支持机型
MeetingBoard 65/75-Pro/86,MeetingEye 500/900,MeetingBar A10/A40,Yealink RoomConnect,UVC40
当业务请求时,若出现鉴权失败,将会回复以下响应实例:
响应实例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"status":500
}
此时,客户端可重新进行鉴权请求。
3. 处理超过限制
支持机型
MeetingBoard 65/75-Pro/86,MeetingEye 500/900,MeetingBar A10/A40
如果业务请求并发量超过十个,就会触发服务器并发量限制机制,将会回复以下响应实例:
响应实例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"status":500
}
前提条件
使用 HTTPS API 协议对接,需在设备网页端同时开启 TCP/IP 安全控制 和 HTTPS API(系统 > 设备管理)。
需在设备网页端配置服务器地址为 avcapp.center_controller.enable =1 (系统 > 设备管理 > 自动更新 > 服务器地址)并点击页面底部 立即更新。
来电场景
1. 来电接听
基本信息
类别
信息
Method
POST
Path
/centralcontrol/talk/answer?app=avcphone
请求体
空
请求示例
//HTTPS
POST /centralcontrol/talk/answer?app=avcphone
//Socket
talk answer app:avcphone
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
2. 来电挂断
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/exitall?app=avcphone
请求体
空
请求示例
//HTTPS
POST centralcontrol/talk/exitall?app=avcphone
//Socket
talk exitall app:avcphone
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
通话场景
1. 建立通话
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/callout?app=avcphone
请求体
类别
类型
说明
number
string
呼叫的号码
videoCall
bool
true为视频通话,false为音频通话
callType
string
呼叫类型:"auto"、"h323_account"、"sip_account"、"h323_ipcall"、"sip_ipcall"
请求示例
//HTTPS:
POST centralcontrol/talk/callout?app=avcphone
{
"number":"10.50.152.46",
"videoCall":true,
"callType":"auto"
}
//Socket
talk callout app:avcphone {"number":"10.50.152.46", "videoCall":true, "callType":"auto"}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
2. 获取通话记录
基本信息
类别
信息
Method
GET
Path
centralcontrol/talk/callLog?app=avcphone
请求体
空
请求示例
//HTTPS
GET centralcontrol/talk/callLog?app=avcphone
//Socket
talk callLog app:avcphone
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"callLog": [
{
"accountType": 0, //通话记录账号类型,0为自动,2为H323账号,3为SIP账号,4为H323 IP直拨,5为SIP IP直拨
"apolloConfNumber": "",
"bornTick": "1740561952", //通话建立时间戳
"displayName": "DeskVision A24", //显示名称
"duration": "108", //通话持续时间
"id": 95, //通话记录id
"isCloud": false, //是否云端
"line": 21,
"parentId": 1,
"showNumber": "10.50.152.46", //显示号码
"type": 0 //通话记录类型,0为去电,1为来电,2为未接听
},
{
"accountType": 0,
"apolloConfNumber": "",
"bornTick": "1740561504",
"displayName": "DeskVision A24",
"duration": "388",
"id": 94,
"isCloud": false,
"line": 21,
"parentId": 1,
"showNumber": "10.50.152.46",
"type": 0
},
//……
],
"message": "success",
"status": 900200
}
3. 挂断通话
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/exitall?app=avcphone
请求体
空
请求示例
//HTTPS
POST centralcontrol/talk/exitall?app=avcphone
//Socket
talk exitall app:avcphone
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
基础会控
1. 音频静音/取消静音
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/mute?app=avcphone
请求体
类别
类型
说明
muteType
string
mute类型,音频为"audio"
isMute
bool
true关闭音频,false为打开音频
请求示例
//HTTPS
POST centralcontrol/talk/mute?app=avcphone
{
"muteType":"audio",
"isMute":true
}
//Socket
talk mute app:avcphone {"muteType":"audio", "isMute":true}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
2. 摄像机关闭/打开
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/mute?app=avcphone
请求体
类别
类型
说明
muteType
string
mute类型,视频为"camera"
isMute
bool
true关闭摄像机,false为打开摄像机
请求示例
//HTTPS
POST centralcontrol/talk/mute?app=avcphone
{
"muteType":"camera",
"isMute":true
}
//Socket
talk mute app:avcphone {"muteType":"camera", "isMute":true}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
3. 辅流投屏打开/关闭
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/share?app=avcphone
请求体
类别
类型
说明
isStart
bool
true开启辅流投屏,false为关闭辅流投屏
请求示例
//HTTPS
POST centralcontrol/talk/share?app=avcphone
{
"isStart":true
}
//Socket
talk share app:avcphone {"isStart":true}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
通话布局
1. 获取通话布局
基本信息
类别
信息
Method
GET
Path
centralcontrol/talk/layoutGet?app=avcphone
请求体
类别
类型
说明
isMultiCam
bool
false为通话布局,true为多摄布局
请求示例
//HTTPS
GET centralcontrol/talk/talkDetails?app=avcphone
{
"isMultiCam":false
}
//Socket
talk layoutGet app:avcphone {"isMultiCam":false}
响应示例
响应体中将根据已连接的扩展屏数量,返回相应数量的扩展屏通话布局信息。
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"talkLayout": {
"main_screen":{
"layout_type":0, //0为1+N, 1为画廊,2为画中画,3为单方全屏
“current”:"remote", //放大对象或小图对象。画中画为小图对象,1+N或单方全屏为放大对象
"hasShare":true //是否有辅流,决定选项是否可以选辅流
},
"secord_screen":{
"layout_type":3, //除了主屏,其他屏固定为3,单方全屏
"current":"remote"
"hasShare":false
},
"third_screen":{
"layout_type":3,
"current":"local"
"hasShare":true
},
"four_screen":{
"layout_type":3,
"current":"share"
"hasShare":false
}
},
"message": "success",
"status": 900200
}
2. 设置通话布局 (包含多屏)
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/layoutSet?app=avcphone
请求体
:::NOTE 请求体里,layout_type 和 option 不可同时都有,只能任选其一,但不可同时都没有。当screen不是 1 (即非第一屏) 时,layout_type 配置不生效 :::
类别
类型
说明
isMultiCam
bool
false为通话布局,true为多摄布局
screen
int
要设置的屏幕。1为第一屏,2为第二屏,3为第三屏,4为第四屏
layout_type
int
要设置的布局。0为1+N,1为画廊,2为画中画,3为单方全屏。如果screen不是1,该项无效
option
string
要设置的放大对象或小图对象。"remote"、"local"、"share"
请求示例
//HTTPS
//示例1:设置第一屏通话布局为画中画
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":false,
"screen":1,
"layout_type":2
}
//示例2:设置第二屏通话布局的放大对象为投屏
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":false,
"screen":2,
"option":"share"
}
//错误示例,非第一屏无法设置布局类型,即layout_type只能为单方全屏(3)
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":false,
"screen":2,
"layout_type":2
}
//Socket
talk layoutSet app:avcphone {"isMultiCam":false, "screen":1, "layout_type":2}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
多摄布局
1. 获取多摄布局
基本信息
类别
信息
Method
GET
Path
centralcontrol/talk/layoutGet?app=avcphone
请求体
类别
类型
说明
isMultiCam
bool
false为通话布局,true为多摄布局
请求示例
//HTTPS
GET centralcontrol/talk/talkDetails?app=avcphone
{
"isMultiCam":true
}
//Socket
talk layoutGet app:avcphone {"isMultiCam":true}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
”talkLayout":{
"layout_type":0 //0为1+N, 1为画廊,3为单方全屏
"current_camera":"50" //当前放大画面的摄像机的cameraId
}
"message": "success",
"status": 900200
}
2. 设置多摄布局
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/layoutSet?app=avcphone
请求体
:::NOTE 请求体中的 layout_type 与 option 参数至少需提供一个,可同时存在,但不可同时为空。 :::
类别
类型
说明
isMultiCam
bool
false为通话布局,true为多摄布局
layout_type
int
要设置的布局。0为1+N,1为画廊,3为单方全屏。多摄布局不可设置为画中画(2)
option
string
放大画面的摄像机cameraId
请求示例
//HTTPS
//示例1:设置多摄布局为1+N
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":true,
"layout_type":0
}
//示例2:设置多摄布局为单方全屏,且放大对象为cameraId=200的摄像机
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":true,
"layout_type":3,
"option":"200"
}
//错误示例,layout_type和option不可都为空
POST centralcontrol/talk/layoutSet?app=avcphone
{
"isMultiCam":true
}
//Socket
talk layoutSet app:avcphone {"isMultiCam":true, layout_type":3}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
3. 获取通话
统计
基本信息
类别
信息
Method
GET
Path
centralcontrol/talk/talkDetails?app=avcphone
请求体
空
请求示例
//HTTPS
GET centralcontrol/talk/talkDetails?app=avcphone
//Socket
talk talkDetails app:avcphone
响应示例
在响应体中:
有开启本地辅流后,才有"shareSend"。有收到远端辅流后,才有"shareRecv"
视频通话才有"videoRecv"和"videoSend",音频通话仅有"audioRecv"和"audioSend"
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"message": "success",
"status": 900200,
"talkDetails": {
"audioRecv": { //音频接收
"bandWidthRecv": 48, //带宽,单位Kbps
"codecRecv": "G7221C", //编解码
"jitterRecv": 2, //抖动,单位ms
"lostPercentRecv": 0, //丢包率,单位%
"sampleRateRecv": 32, //采样率
"totalLostRecv": 0 //丢包总数
},
"audioSend": { //音频发送
"bandWidthSend": 54, //带宽,单位Kbps
"codecSend": "G7221C", //编解码
"jitterSend": 3, //抖动,单位ms
"lostPercentSend": 0, //丢包率,单位%
"sampleRateSend": 32, //采样率
"totalLostSend": 0 //丢包总数
},
"protocl": "H323", //协议类型
"shareRecv": { //辅流接收
"bandWidthRecv": 904, //带宽,单位Kbps
"codecRecv": "H264HP", //编解码
"frameRateRecv": 30, //帧率,单位fps
"heightRecv": 1080, //分辨率-高
"jitterRecv": 6, //抖动,单位ms
"lostPercentRecv": 0, //丢包率,单位%
"totalLostRecv": 0, //丢包总数
"widthRecv": 1920 //分辨率-宽
},
"shareSend": { //辅流发送
"bandWidthSend": 804, //带宽,单位Kbps
"codecSend": "H264HP", //编解码
"frameRateSend": 29, //帧率,单位fps
"heightSend": 1080, //分辨率-高
"jitterSend": 14, //抖动,单位ms
"lostPercentSend": 0, //丢包率,单位%
"totalLostSend": 1, //丢包总数
"widthSend": 1920 //分辨率-宽
},
"totalBandWidthRecv": 2650, //接收总带宽,单位Kbps
"totalBandWidthSend": 1693, //发送总带宽,单位Kbps
"userAgent": "Yealink DeskVision A24 156.321.254.135 38/2", //对端设备信息
"videoRecv": { //视频接收
"bandWidthRecv": 1697, //带宽,单位Kbps
"codecRecv": "H264HP", //编解码
"frameRateRecv": 30, //帧率,单位fps
"heightRecv": 1080, //分辨率-高
"jitterRecv": 21, //抖动,单位ms
"lostPercentRecv": 0, //丢包率,单位%
"totalLostRecv": 0, //丢包总数
"widthRecv": 1920 //分辨率-宽
},
"videoSend": { //视频发送
"bandWidthSend": 1638, //带宽,单位Kbps
"codecSend": "H264HP", //编解码
"frameRateSend": 29, //帧率,单位fps
"heightSend": 1080, //分辨率-高
"jitterSend": 21, //抖动,单位ms
"lostPercentSend": 0, //丢包率,单位%
"totalLostSend": 2, //丢包总数
"widthSend": 1920 //分辨率-宽
}
}
}
其他功能
1. 拨号盘DTMF
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/dtmf?app=avcphone
请求体
类别
类型
说明
key
string
拨号盘输入的按键
请求示例
//HTTPS
POST centralcontrol/talk/dtmf?app=avcphone
{
"key":1
}
//Sokcet
talk dtmf app:avcphone {"key":"1"}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
2. 远端摄像机控制
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/fecc?app=avcphone
请求体
注意:当isStart为flase时,不需要derection
类别
类型
说明
isStart
bool
true为开始移动,false为停止移动
direction
string
方向。"left"、"right"、"down"、"up"、"zoom_in"、"zoom_out"
请求示例
//HTTPS
//开始移动,方向向左
POST centralcontrol/talk/fecc?app=avcphone
{
"isStart":true,
"direction":"left"
}
//停止移动
POST centralcontrol/talk/fecc?app=avcphone
{
"isStart":false,
}
//Socket
talk fecc app:avcphone{"isStart":true,"direction":"left"}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
3. 密码鉴权
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/authentication?app=avcphone
请求体
类别
类型
说明
password
string
要鉴权的密码
请求示例
//HTTPS
POST centralcontrol/tak/authentication?app=avcphone
{
"password":"0000"
}
//Socket
talk authentication app:avcphone{"password":"0000"}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
账号设置
1. 读取配置值
基本信息
类别
信息
Method
GET
Path
centralcontrol/talk/configGet?app=avcphone
请求体
类别
类型
说明
key
string
配置项名称
type
string
配置项的类型,需要指定是"int"或者"string"或者"bool"
请求示例
//HTTPS:
GET centralcontrol/talk/configGet?app=avcphone
{
"key":"account.1.enable",
"type":"int"
}
//Socket
talk configGet app:avcphone{"key":"account.1.enable","type":"int"}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"value": 1,
"message": "success",
"status": 900200
}
2. 写入配置值
基本信息
类别
信息
Method
POST
Path
centralcontrol/talk/configSet?app=avcphone
请求体
类别
类型
说明
key
string
配置项名称
value
string
配置的值。string或者int值。如果实际含义是bool,则1为true,0为flase
请求示例
//HTTPS
//写入int值
POST centralcontrol/talk/configSet?app=avcphone
{
"key":"account.1.enable",
"value":0
}
//写入string值
POST centralcontrol/talk/configSet?app=avcphone
{
"key":"account.1.user_name",
"value":"9562SIP"
}
//Socket
talk configSet app:avcphone{"key":"account.1.enable","value":0}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"data": "",
"message": "success",
"status": 900200
}
3. 账号设置相关配置项名称和类型
SIP 账号
配置项
类型
配置项名称
备注
SIP账号开关
int
account.1.enable
0为关闭,1为开启
用户名
string
account.1.user_name
注册名
string
account.1.auth_name
密码
string
account.1.password
服务器
string
account.1.sip_server.1.address
端口
string
account.1.sip_server.1.port
代理服务器开关
int
account.1.outbound_proxy_enable
0为关闭,1为开启
代理服务器地址
string
account.1.outbound_proxy.1.address
代理服务器端口
string
account.1.outbound_proxy.1.port
传输方式
int
account.1.sip_server.1.transport_type
0为UDP,1为TCP,2为TLS,3为DNS-NAPTR
注册超时
string
account.1.sip_server.1.expires
BFCP开关
int
account.1.bfcp.enable
0为关闭,1为开启
BFCP传输方式
int
account.1.bfcp.mode
0为UDP,1为TCP
SIP IP 直拨
配置项
类型
配置项名称
备注
SIP IP直拨开关
int
features.direct_ip_callout_enable
0为关闭,1为开启
传输方式
int
account.17.sip_server.1.transport_type
0为UDP,1为TCP
SRTP
int
account.17.srtp_encryption
0为禁用,1为启用,2为强制
DTMF类型
int
account.17.dtmf.type
0为INBAND,1为RFC2833,2为SIP INFO,3为RFC2833+SIP INFO
DTMF信息类型
int
account.17.dtmf.info_type
1为DTMF-Relay,2为DTMF,3为Phone-Event
NAT方式
int
account.17.nat.nat_traversal
0为禁用,1为STUN,2为静态NAT
Rport开关
int
account.17.nat.rport
0为关闭,1为开启
BFCP开关
int
account.17.bfcp.enable
0为关闭,1为开启
BFCP传输方式
int
account.17.bfcp.mode
0为UDP,1为TCP
H.323 账号
配置项
类型
配置项名称
备注
H.323协议开关
int
h323.enable
0为关闭,1为开启
H.323账号开关
int
account_h323.enable
0为关闭,1为开启
H.323用户名
string
account_h323.name
H.323分机号
string
account_h323.extension
网守类型
int
account_h323.gk_mode
0为禁用,1为自动,2为手动
网守服务器1
string
account_h323.gk_server.1.address
网守端口1
string
account_h323.gk_server.1.port
网守服务器2
string
account_h323.gk_server.2.address
网守端口2
string
account_h323.gk_server.2.port
网守验证开关
int
account_h323.gk_auth.enable
0为关闭,1为开启
网守用户名
string
account_h323.gk_username
网守密码
string
account_h323.gk_password
H.460开关
int
account_h323.h460.enable
0为关闭,1为开启
H.323隧道开关
int
account_h323.tunneling.enable
0为关闭,1为开启