国信呼叫中心 WebRTC网页电话集成

什么是WebRTC技术?
"WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术,Google开源了这项技术!"
就冲着6000多万美金的技术,就很值得研究一下!WebRTC提供了视频会议的核心技术,包括音视频采集、编解码、网络传输、显示等功能,并且还支持跨平台:Windows,Linux,Mac,Android,尤其是在实时通信方面的很多技术可以灵活嫁接到非RTC类流媒体系统中,例如,在低带宽下的视频抖动控制,图像效果增强,通用NAT穿透过程等等(后面咱们再具体细说如何嫁接)。
::: warning WebRTC仅能在支持H5的浏览器中使用 :::
WebRTC-SIP的互联互通

WebRTC传输的是加密的流媒体语音,传统SIP传输的是非加密的流媒体。它们之间的互联互通,需要相互之间进行加解密处理。国信CTi已经完美解决上述问题。
WebRTC应用场景
手机和平板端应用
● 提升软件竞争力,目前很多管理系统都支持手机端的访问和使用,可在基于H5开发应用界面嵌入语音通信能力,提升产品的竞争力。
● 防止封杀,使用4G网络,运营商会限制传统SIP网络电话的接入。使用国信WebRTC的电话,直接在信令和媒体加密,运营商无法进行封杀。
● 移动办公,使用手机在任何有4G网络的地方都可以接打公司的电话。
● 降低成本,电销公司,不再需要为坐席购买电脑和耳麦,仅需要员工用手机或者Pad浏览器登录到系统,就可以接打营销电话。
电脑端应用
● 维护方便,电脑端无需安装任何插件和软件,使用浏览器登录系统就可以接打电话。
● 升级简单,不再需要这个电脑进行系统升级,仅需要升级后台,前端就统一升级到最新版。
● 分机随身,集成了WebRTC电话功能的系统,坐席使用账户登录后,分机号码无需重新设定。
我们能提供什么
● WebRTC语音终端无缝接入到国信呼叫中心中,让WebRTC终端能像SIP终端一样支持放音,报工号,录音,转话,会议。
● WebRTC到SIP的互联互通。
● 提供基于WebRTC的JavaScript封装的二次开发库,降低开发门槛。
国信WebRTC JS开发库
只需少量JavaScript代码,即可轻松将WebRTC电话功能嵌入您的网站前端。如下图:

国信WebRTC开发库下载
WebRTC-Lib开发库,包含使用例子,修改连接地址,部署到容器即可使用。 下载
开发库说明
js目录中的所有文件都是经过封装的,用于简化WebRTC对接开发的JS库文件。这些文件包含了用于WebRTC应用程序开发的便捷功能,使得开发人员无需深入了解WebRTC的底层细节,即可快速构建和部署WebRTC应用程序。
SipContainer
库中提供的SipContainer将WebRTC封装成了电话软终端,提供了注册,拨打,挂机,接听等一系列电话功能接口。使用该实例能够非常方便的创建一个电话软终端。
开发流程如下:
::: tip 实例化SipContainer,构造函数中传入呼叫中心服务器的地址,前端Audio播放组件
调用SipContainer的open方法,传入分机号和分机密码
实现SipContainer的13个回调方法。详情见后面描述
您还可调用SipContainer提供的8个方法 :::
接口方法
为开发者提供的可直接调用的函数和方法
| 名称 | 功能描述 | 参数说明 |
|---|---|---|
| new SipContainer | 创建WebRTC终端实例 | 1. websocket连接地址 例如:wss://x.x.x.x:7399/websocket 将x.x.x.x替换成CTi服务器地址 2. 网页上的audio放音组件实例 |
| open | 连接CTi服务器,自动注册 | 1. 分机号 2. 分机注册密码,由CTi后台配置 |
| register | 向CTi服务器发送注册消息 | 1. 分机号 2. 分机注册密码,由CTi后台配置 ::: warning 注意: open函数会调用当前方法,因此仅当修改了分机号或密码后调用该方法重新注册。 ::: |
| unRegister | 向CTi服务器发送注销消息,释放资源,不再接听和拨打电话 | 无 |
| reRegister | 注销后可调用该方法重新注册 | 无 |
| reject | 在振铃时调用,用于拒接来电 | 无 |
| answer | 在振铃时调用,用于接听来电 | 无 |
| makecall | 拨打电话 | 1: 即将呼叫的目标号码 |
| hangupCall | 外呼等待接通或者已经在通话中时(不区分接听还是外呼),挂断电话 | 无 |
回调方法
开发者需要实现的一系列的回调方法,回调方法一般处理CTi通过WebSocket发往软终端的各类消息

回调方法列表
| 名称 | 功能描述 | 回调参数说明 |
|---|---|---|
| onincoming | 来电通知 | { "callid": "a8d8604e-99f0-4ef3-89b3-ac0866f12d2e@192.168.0.86", "method": "INVITE", "from": "806", "to": "833", } ::: tip callid: 会话编号 method: 消息类型呼叫 from: 主叫号码 to: 被叫号码,即本机号码 ::: |
| oncancel | 对端取消呼叫 | 略 |
| onrmterr | 外呼失败 | 略 |
| onearly | 外呼,对端振铃 | { "callid": "8D400D733DF197E7", "method": "INVITE", "from": "833", "to": "806", "status": 180, } ::: tip callid: 会话编号 method: 消息类型呼叫 from: 主叫号码 to: 被叫号码,即本机号码 status: 180振铃消息 ::: |
| onconfirmed | 外呼,对端接听 | 略 |
| onterminated | 通话已经挂断 | 略 |
| onregfail | 注册失败!账号或者密码不正确. | 略 |
| onregsucc | 注册成功 | 略 |
| oncnnsucc | 已连接 | 略 |
| oncnnfail | 连接中断,正在自动重连中... | 略 |
| onforceOffline | 账号已在其他终端登录,请退出。 | 略 |
| onstate | 置忙置闲通知,来电排队通知,弹屏通知 | 请参考开发库提供的文件main.js的实现方式 |
| onmikegrant | 浏览器麦克风授权通知 | 仅iso微信嵌入国信WebRTC需要关注,其他浏览器可忽略 |
苹果手机微信小程序嵌入WebRTC的特殊处理
::: tip 苹果手机微信小程序集成WebRTC软终端时,在第一次呼叫时会申请麦克风权限。
网页授权后,需要利用SipContaner的onmikegrant回调函数监听授权操作。
一旦授权成功,可以弹出一个窗口提示用户再次点击呼叫按钮继续呼出。
这种方式可以确保用户操作的连贯性,在授权后能够顺利地进行后续的呼出操作。 :::
::: warning 仅苹果手机微信小程序需要注意,其他地方可忽略当前处理。 :::
