本系统为声网 RTC与SIP电话的中间件系统,用于实现声网 SDK和SIP/PSTN电话网络互通,支持彼此呼入和呼出。
公共参数信息,以及相关约定。
1、通讯方式:http协议通信
2、请求方式:POST / GET
3、请求实体:json
4、通讯字符集采用 utf-8编码
1、开启签名验证后,进行接口调用时,http请求中,需添加签名信息
2、签名方式,
get/post请求时:serverKey+":"+参数名1=参数值1+"&"+参数名2=参数值2,其中参数顺序根据字符大小升序排列。
DigestUtils.md5Hex(serverKey:param1=value1¶m2=value2¶m3=value3);
post(数据存放于body中)请求时:serverKey+":"+json字符串,其中json字符串与存放于body中的字符串相同。
DigestUtils.md5Hex(serverKey:jsonStr);
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
用户密匙 | serverKey |
String | Y | 用户密匙信息 |
签名 | sign |
String | Y | 签名信息 |
1、api接口,可支持get/post请求,post请求时,可支持以post实体json的方式,进行参数传递。
2、事件推送时,以post实体json的方式,进行参数传递,返回值为json字符串,code值为"0"时,表示接受成功,其他为接受失败,msg,为接受失败的错误信息。
返回示例
{
"code":"0",
"msg":"success"
}
对接本系统时,针对相关功能,需联系业务对接的相关事项准备。
呼入会议功能,需配置呼入线路,呼入号码,以及相关呼叫流程(ivr语音提示。)
1、对接的呼入线路,呼入号码,若使用本系统线路,请联系业务方申请did号码,用于呼入对接,若使用自有的线路信息,需联系业务方,安排技术人员,以及呼入线路方进行线路对接。
2、自定义ivr语音提示,需联系业务,表明提示流程,以及提供相关语音文件,安排技术进行ivr自定义配置。
外呼功能,涉及到外呼手机,以及外呼SIP功能。
1、外呼手机时,需配置外呼线路信息,若使用本系统线路,联系业务配置,若使用自有线路,需联系业务,安排技术人员,以及外呼线路方进行线路地接。
2、外呼SIP时,需确定被叫方的SIP用户信息,以及相关线路的呼入配置,联系业务,安排技术配合调试。
由于声网的rtc进行呼叫时,存在使用token验证方式呼叫,以及直接使用appid的方式呼叫,本节说明使用token验证的方式外呼的准备事项。
1、对接时,声网相关的配置,需联系业务,安排技术人员,进行相关配置。
2、确认token信息,是本系统根据帐号或uid进行自动生成,还是调用接口时,直接传输过来。
3、由本系统自动生成token时,需提供声网的appid,证书,以及验证方式(帐号/uid),帐号生成token时,需提供相应的帐号信息,uid生成时,需保证传输的uid信息的唯一性。
4、若要求直接传输token的的方式,则需确认token生成方式,是否使用声网demo,以及是否存在自定义加密的方式,注:本系统的相关接口仅支持传输原始token,若进行了加密时,需本系统按照制定的加密方式获取token时,需联系业务,进行定制接口。
若需求本系统相关对接的android端,ios端的相关demo,或者相关源码,请联系业务处理。
简要描述
添加会议,仅用于其他用户以呼入的方式加入会议。
接口地址
/api/meet/add
请求参数:
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
房间号 | room_id |
String | Y | Agore房间号,即声网呼叫生成的房间号信息,用于接入SIP端呼叫。 |
会议号 | meet_num |
String | Y | 会议号,用于呼入方输入,确认加入的会议室 |
呼入号码 | did_num |
String | Y | DID号码,SIP端所需的呼入号码 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code | String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg | String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/add?room_id=346300810108500&meet_num=1234&did_num=xxxxxxxxxxxxx
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
查看用于呼入的did号码的在线呼叫信息
接口地址
/api/meet/online_for_did
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
呼入号码 | did_num |
String | y | DID号码,SIP端所需的呼叫的被叫号码 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
在线呼叫 | data |
JsonArray | Y | 在线呼叫信息 |
room_id |
String | Y | 房间号 | |
caller |
String | Y | 主叫号码 |
请求示例
http://ip:port/api/meet/online_for_did?did_num=xxxxxxxxxxxxx
返回示例
{
"msg":"success",
"code":"000000",
"data":[
{
"room_id":"346300810108500",
"caller":"16620137426"
},
{
"room_id":"346300810108500",
"caller":"18860233225"
}
]
}
简要描述
释放会议信息,禁止其他用户呼入did加入会议
接口地址
/api/meet/delete
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
呼入号码 | did_num |
String | Y | DID号码,SIP端所需的呼叫的被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
会议号 | meet_num |
String | Y | 会议号 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/delete?room_id=346300810108500&meet_num=1234&did_num=xxxxxxxxxxxxx
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
禁言/解除禁言指定房间的指定用户,禁言,即禁止相应用户发言
接口地址
/api/meet/userMute
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
被叫号码 | did_num |
String | Y | 被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
主叫 | caller |
String | Y | 主叫号码 |
是否禁言 | mute |
String | Y | 禁言:ON:开启禁言,OFF,解除禁言 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/userMute?room_id=346300810108500&caller=16620137426&did_num=xxxxxxxxxxxxx&mute=ON
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
禁言/解除禁言指定房间内所有用户,禁言,即禁止相应用户发言
接口地址
/api/meet/userMuteAll
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
房间号 | room_id |
String | Y | 房间号 |
是否禁言 | mute |
String | Y | 禁言:ON:开启禁言,OFF,解除禁言 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/userMuteAll?room_id=346300810108500&mute=ON
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
禁听/解除禁听指定房间内的指定用户,禁听,即禁止用户听到会议信息
接口地址
/api/meet/userForbidListen
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
主叫号码 | caller |
String | Y | 主叫号码 |
被叫号码 | did_num |
String | Y | did号码,被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
是否禁听 | mute |
String | Y | 禁言:ON:开启禁听,OFF,解除禁听 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/userForbidListen?room_id=346300810108500&caller=16620137426&did_num=xxxxxxxxxxxxx&mute=ON
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
禁听/解除禁听指定房间内的所有用户
接口地址
/api/meet/userForbidListenAll
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
房间号 | room_id |
String | Y | 房间号 |
是否禁言 | mute |
String | Y | 禁听:ON:开启禁听,OFF,解除禁听 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/userForbidListenAll?room_id=346300810108500mute=ON
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
用户按键申请发言时,管理员拒绝该用户的申请,调用该接口提示用户发言申请失败
接口地址
/api/meet/applyNo
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
主叫号码 | caller |
String | Y | 房间号 |
被叫号码 | did_num |
String | Y | did号码,被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/applyNo?room_id=346300810108500&caller=16620137426&did_num=xxxxxxxxxxxxx
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
调用接口,直接外呼指定的手机号,该功能需要本系统技术方对接相关线路,请联系业务进行相关线路对接,注:对接是请说明是否对接自己的线路,或者业务推荐相关线路
接口地址
/api/meet/callAndJoin
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
主叫号码 | caller |
String | Y | 房间号 |
被叫号码 | phone |
String | Y | 被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
声网的uid信息 | uid |
String | Y | 加入房间的uid信息,用于token验证,仅token验证的方式可用 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/callAndJoin? caller= xxxxxxxxxxxxx&phone= 938616620137426& room_id=4244445308293274
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
本接口为外呼Sip服务器用户接口,调用该接口可直接外呼指定的SIP账号,外呼时,caller:即送到sip服务器的主叫信息,phone:即送到sip服务器的被叫信息,可根据sip服务器方需求自定义
接口地址
/api/meet/callSIP
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
主叫号码 | caller |
String | Y | 房间号 |
被叫号码 | phone |
String | Y | 被叫号码 |
房间号 | room_id |
String | Y | 房间号 |
声网的uid信息 | uid |
String | Y | 加入房间的uid信息,用于token验证,仅token验证的方式可用 |
SIPServer地址 | gw |
String | Y | 加入房间的uid信息,仅token验证的方式可用 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/callSIP?room_id=346300810108500&&caller=xxxxxxxxxxxxx&phone=902020&gw=sipServer:port
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
本接口为查看指定房间号内的在线呼叫信息
接口地址
/api/meet/onlineForRoomid
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
房间号 | room_id |
String | Y | 房间号 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
在线呼叫信息 | data |
JsonArray | Y | 在下呼叫信息 |
uuid |
String | Y | 在线呼叫的uuid信息 | |
uid |
String | Y | 加入房间的uid信息 | |
caller |
String | Y | 主叫 | |
creatAt |
String | Y | 开始时间 | |
callSteps |
String | Y | 呼叫阶段:calling,呼叫中,connect,接通中(振铃状态算接通中) | |
callee |
String | Y | 被叫 | |
mute |
String | Y | 是否禁言,off,未禁言,on,已禁言 | |
forbidListen |
String | Y | 是否禁听,off或空,未禁听,on,已禁听 | |
updateTime |
String | Y | 更新时间 | |
direction |
String | Y | 呼叫方向,in,呼入,out,呼出 |
请求示例
http://ip:port/api/meet/onlineForRoomid?roomid=346300810108500
返回示例
{
"msg":"success",
"code":"000000",
"data":[
{
"uid":"1813467991",
"caller":"xxxxx",
"creatAt":"2020-07-14 14:56:9839",
"callSteps":"calling",
"callee":"xxxxxx",
"mute":"on",
"forbidListen":"off",
"updateTime":1594709799098,
"direction":"in"
},
{
"uid":"1813467990",
"caller":"xxxx",
"creatAt":"2020-07-14 15:01:48939",
"callSteps":"connect",
"callee":"xxxxxx",
"mute":"on",
"forbidListen":"off",
"updateTime":1594710099489,
"direction":"in"
}
]
}
简要描述
调用本接口,可从指定房间号中,根据主叫被叫踢出指定用户
注:踢出用户时所需的主叫被叫信息,需为会议在线呼叫列表中的主叫被叫信息
接口地址
/api/meet/killCall
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
主叫号码 | caller |
String | Y | 主叫号码 |
被叫号码 | callee |
String | Y | 被叫号码 |
房间号 | roomid |
String | Y | 房间号 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/killCall?roomid=346300810108500&caller=xxxxxxxxxxxxx&callee=xxxxx
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
本接口为结束会议接口,即调用该接口,会挂断指定房间的所有在线呼叫信息,即,结束会议
接口地址
/api/meet/endTheMeet
请求参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
房间号 | roomid |
String | Y | 房间号 |
返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
String | Y | 000000为成功,其他为失败,例:000001 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为调用失败信息 |
请求示例
http://ip:port/api/meet/endTheMeet?roomid=346300810108500
返回示例
{
"code":"000000",
"msg":"success"
}
简要描述
本接口为呼叫/会议相关的时间推送,由技术方配置好推送地址后,呼叫/会议相关的事件,将推送json至推送地址
推送地址
提供推送地址,联系业务员,安排技术人员对接
推送参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
推送事件 | event |
String | Y | 推送事件信息:enterMeet,用户进入会议leaveMeet,用户离开会议logMeet,用户离开会议时,该用户的会议日志信息dtmf,按键事件推送sipConnect,外呼被叫端接听事件sipHangUp,挂断时间注:挂断时间其中hangUpReason参数:sip_disconnected_res:正常挂断其他为异常呼叫sip_calling_res,呼叫失败sip_user_busy,用户忙-接口端sip_user_busy_res,用户忙-被叫sip端sip_no_response_res,用户未响应sip_rejected_res,用户拒接 |
推送信息 | data |
Json | Y | 推送信息 |
caller |
String | Y | 主叫号码 | |
callee |
String | Y | 被叫号码 | |
enter_time |
String | Y | 进入会议时间 | |
leave_time |
String | N | 离开会议时间,logMeet事件时该值不为空 | |
bille |
int | N | 呼叫时长,logMeet事件时该值不为空 | |
uuid |
String | Y | 声网uid信息 | |
roomid |
String | Y | 声网房间号 | |
dtmf |
String | N | 用户按键信息,dtmf时间时,不为空 |
约定返回参数
参数名称 | 参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
错误码 | code |
int | Y | 0,为接受成功,其他为接受失败 |
错误信息 | msg |
String | Y | 错误信息,success为成功,其他为接受失败 |
推送示例
#会议日志推送
{
"data":{
"caller":"16620137426",
"leave_time":"1588844180002",
"callee":"xxxxxxxxxxxxx",
"bille":9,
"enter_time":"1588844170327",
"uuid":"3735235538",
"roomid":"346300810108500"
},
"event":"logMeet"
}
#用户按键推送
{
"data":{
"caller":"16620137426",
"dtmf":"1234#",
"callee":"xxxxxxxxxxxxx",
"enter_time":"1588844170327",
"uuid":"3735235538",
"roomid":"346300810108500"
},
"event":"dtmf"
}
#呼叫接通
{
"data":{
"caller":"902020",
"connectTime":"2020-01-01 00:00:00",
"callee":"82902020",
"roomid":"12345678"
},
"event":"sipConnect"
}
#呼叫挂断
{
"data":{
"caller":"902020",
"hangUpReason":"sip_disconnected_res",
"connectTime":"2020-07-20 11:30:14",
"callee":"82902020",
"roomid":"12345678",
"hangUpTime":"2020-07-20 11:31:08"
},
"event":"sipHangUp"
}
#异常呼叫
{
"data":{
"caller":"12345678",
"hangUpReason":"sip_user_busy",
"callee":"82902020",
"roomid":"12345678",
"hangUpTime":"2020-01-01 00:00:00"
},
"event":"sipHangUp"
}
确定返回示例
{
"code":0,
"msg":"success"
}
请根据您的业务规模(并发数)选购,以下为服务器选购建议:
并发数 | CPU | 内存 | 硬盘 | 带宽 | 系统版本 | 备注 |
---|---|---|---|---|---|---|
30 | 1核 | 2G | 40GB | 10M | Linux Centos 6.9 64bit | 1、服务器区域:根据业务区域就近部署;2、服务器类型:计算型;3、带宽计费方案:按流量计费;4、网络安全组(防火墙):入方向允许其他ip访问所有端口;5、登录密码:自定义密码,自定义密码填写; |
50 | 2核 | 4G | 60GB | 20M | Linux Centos 6.9 64bit | |
100 | 4核 | 8G | 120GB | 50M | Linux Centos 6.9 64bit | |
300 | 8核 | 16G | 320GB | 100M | Linux Centos 6.9 64bit | |
500 | 16核 | 32G | 500GB | 200M | Linux Centos 6.9 64bit | |
1000 | 24核 | 48G | 1024GB | 400M | Linux Centos 6.9 64bit |
1、安装脚本以Centos 64位的版本为准,其他类型linux系统可能会由于系统环境,以及相关命令不同,容易安装失败。
2、32位系统,由于编译环境不用,所以安装脚本会执行失败。
3、Centos 其他型号64位系统,如:6.0,6.4,7.x型号的,也可安装,但推荐6.9型号的,较为稳定
3、可自定义设置云盘大小,由于需要存储数据信息,所以根据业务数据大小进行设定。
4、带宽,建议按流量计费,由于固定带宽较贵,且本系统为呼叫中心类型的系统,需处理呼叫语音包,带宽较小时,会出现带宽不足的情况,所以建议按流量计费。
5、网络安全组,本系统为呼叫中心系统,进行外呼时,需要用到16384~32768,以及其他端口,需开放的端口较多,后续可在服务器内部设定防火墙信息,所以建议开放所有端口。
6、登录密码,若需要我发给配合安装,则需要给予我们服务器的ssh的访问权限,也可以设定为密匙登录,按需配置。