APP下载

WebRTC技术在语音平台中的应用研究*

2018-03-13

通信技术 2018年2期
关键词:开发者浏览器网页

赵 宇

0 引 言

WebRTC是一个开源项目,可以在浏览器中不借助任何插件进行实时通信。由Google、Opera和Mozilla主导的这一项目,允许开发者在浏览器中仅使用JavaScript API和HTML5将声音、讯息和视频融为一体。尽管WebRTC提供了一些标准以促进创新,但尚有一些问题需要解决。其中,两个大问题是缺少标准化信令和浏览器的普遍支持。WebRTC联盟曾故意遗漏信令标准来避免冲突,使各方尽快就标准达成共识。因此,厂商目前可以使用各不相同的协议,包括SIP、WebSockets以及HTTP协议,从而使WebRTC跨浏览器应用而被广泛支持。

1 WebRTC简介

WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术。WebRTC实现了基于网页的视频会议,标准是WHATWG协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications,RTC)能力。

WebRTC项目的最终目的主要是让Web开发者能够基于浏览器轻易快捷地开发出丰富的实时多媒体应用,而无需下载安装任何插件;Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现[1]。WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,且支持跨平台windows、linux、mac、android。谷歌浏览器、火狐浏览器、360安全浏览器等,目前支持WebRTC技术标准。

2 WebRTC系统架构

WebRTC的系统架构,如图1所示。

图1 WebRTC系统架构

3 WebRTC架构组件介绍

如图1所示,WebRTC架构组件主要包括Web应用APP、面向Web应用开发者的Web API、面向浏览器厂商开发者的WebRTC Native C++ API以及WebRTC 内核[2]。

Web开发者开发的程序,是指Web开发者可以基于集成WebRTC的浏览器提供的Web API开发基于视频、音频的实时通信应用,如云呼叫中心JSSIP框架和坐席应用。

Web API是指面向第三方开发者的WebRTC标准API(Javascript)。这些API可分成Network Stream API、RTCPeerConnection和Peer-to-peer Data API三类。

Network Stream API的主要对象包括[3]:

①MediaStream用来表示媒体数据流;

②MediaStreamTrack,在浏览器中表示媒体源;

③ RTCPeerConnection,RTCPeerConnection对象允许用户在两个浏览器之间直接通讯;

④RTCIceCandidate表示ICE协议的候选者;

⑤RTCIceServer表示ICE Server;

⑥Peer-to-peer Data API表示点对点数据接口;

⑦DataChannel:数据通道表示一个在两个节点之间的双向的数据通道。

⑧WebRTC Native C++ API是指本地C++ API层,它使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。

WebRTC核心层包括:

①Transport/Session(传输/会话层)组件采用libjingle库的部分组件实现,无须使用xmpp/jingle协议;

②RTP Stack协议栈,即Real Time Protocol;

③STUN/ICE可以通过STUN和ICE组件建立不同类型网络间的呼叫连接;

④Session Management是一个抽象的会话层,提供会话建立和管理功能。该层协议留给应用开发者自定义实现。

⑤VoiceEngine(音频引擎)是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端的整个解决方案。

⑥VideoEngine(视频引擎)是包含一系列视频处理的整体框架,包括从摄像头采集视频到视频信息网络传输再到视频显示的整个完整过程的解决方案。

4 WebRTC技术在云呼叫中心平台的应用

为了方便租用云呼叫中心坐席的用户使用,将WebRTC技术引入云呼叫中心系统平台。用户通过浏览器网页,不用加载任何插件即可进行通话,且用户不需了解任何关于SIP参数的专业配置[4]。系统架构图,如图2所示。

图2 系统架构

在云呼叫中心系统的核心软交换平台增加了对WebRTC的适配模块,即增加对WebSOCKET的支持和SIP OVER WebSOCKET的处理。这样核心软交换平台就实现了WebRTC和标准SIP AGENT之间的交换,从而达到相互通信的目的。

整个平台的架构是完全分布式的,采用高内聚、低耦合的模块化设计思想。软交换平台可以分布式扩展,并且根据坐席和SIP中继线路分配相应的负荷量,确保系统平滑扩展,没有瓶颈。Web和应用服务器可以采用集群方式扩展,数据库服务器可以采用ORACLE RAC来做集群扩展。

模块之间采用业界最好的ICE中间件实现分布式通信和负载均衡,通信安全可靠。Web浏览器和服务器之间采用HTTPS协议,实现了客户数据的高度安全保护,采用SRTP实现语音媒体通信的安全性,确保不能被监听。

坐席的通话方式支持IP话机(支持视频)、IAD电话、网络电话软件(支持视频)、网页通话(浏览器WebRTC,支持视频)和绑定手机或固定电话。客户端采用浏览器方式即B/S结构,易于升级,便于采用互联网方式运营。

系统核心软交换平台采用基于业界最先进的开源软交换系统FREESWITCH定制开发的、支持集群的功能强大的软交换系统,支持SIP等常见软交换协议。

核心软交换平台配置了功能强大的TTS(文本语音转换引擎)、MCU和录音录像引擎。核心软交换平台通过SIP中继和联通软交换网络互联。每个SIP中继对应一组中继号码段,每个SIP中继接入到不同的软交换服务器。

数据库系统采用ORACLE,具备业界最好的安全性和可靠性。扩容时,可以采用ORACLE RAC实现。

Web和应用服务器可以采用集群方式扩展,实现云呼叫中心系统的所有功能。和其他系统的互联采用标准HTTP协议和JavaScript函数API接口。

ACD/IVR/CTI以及视频会议控制服务端软件,支持多服务器部署。

IVR是指语音流程模块,主要处理来电的交互式语音响应。客户通过不同的按键选择不同的业务或者自助查询服务,也可以通过语音识别(ASR)模块识别客户说话进行交互。不同的企业通过后台Web管理页面来定制自己企业的语音流程。例如,可以定义多个语音流程。不同的时段定义不同的语音流程,如上班时间的流程、休息时间的流程;也可以定义多个号码的多个语音流程,其中每个号码对应一个语音流程。

ACD(自动呼叫分配)模块实现来电呼叫的排队和自动分配以及坐席的管理。排队和自动分配是以队列为基本单位进行处理的,客户可以在后台Web管理页面配置各个业务队列,并定制其排队和分配策略。

CTI模块实现了来电的客户信息识别以及服务端和客户端的信息推送,如来电弹屏功能。录音模块实现了对坐席通话的实时录音和存储管理,TTS(文本转语音)模块实现了文本转换为语音的功能,即在语音流程中播放指定的文字[5]。

FLEXGATE模块实现了接收浏览器通过FLASH方式发送过来的控制命令,即关于CTI的坐席操作方面的控制命令通过FLASH实现,如来电弹屏、签入、签出、上线、下线、外呼、会议、保持、监听、咨询坐席等操作。浏览器的控制命令通过FLEXGATE和呼叫中心相关服务通信(IVR、ACD、CTI),系统部署如图3所示。

图3 系统部署

最后,基于JavaScript开发了浏览器网页电话的支持框架JsSIP。这个框架是基于WebRTC的Web API开发的。它将框架集成到云呼叫中心网页中,网页就可以通过JavaScript调用简单的框架提供的接口完成呼叫中心坐席电话的功能,完全可以替代传统的网络电话软件或者插件。

5 JsSIP框架

浏览器应用框架如图4所示。EXTJS框架实现各种管理软件应用的页面;FLASH组件实现ACD信令方面的通信;JsSIP组件实现音视频通信,其建立在WebRTC的Web API层面开发。

图4 浏览器应用框架

JsSIP是用于Web端SIP应用开发的一套JavaScript library。利用它可以实现完整的SIP协议栈和WebRTC交互功能,且可以在任何网站轻松提供一个功能齐全的SIP终端。基于JsSIP开发库,任何网站只要添加几行代码就可以使用音频、视频和消息等实时通讯功能。

框架特点如下[6]:

(1)SIP over WebSocket传送;

(2)Audio/video呼叫,即时消息和presence;

(3)纯JavaScript代码从最基础构建,容易使用功能完善的user API;

(4)可以和著名的OverSIP、Kamailio和Asterisk servers等SIP服务软件互通。

JsSIP实现所遵循的规范如下:

RFC 3261“SIP∶ Session Initiation Protocol”

RFC 3311“SIP UPDATE Method”

RFC 3326“The Reason Header Field for SIP”

RFC 3327“SIP Extension Header Field for Registering Non-Adjacent Contacts”(Path header)

RFC 3428“SIP Extension for Instant Messaging”(MESSAGE method)

RFC 4028“Session Timers in SIP”

RFC 5626“Managing Client-Initiated Connections in SIP”(Outbound mechanism)

RFC 5954“Essential Correction for IPv6 ABNF and URI Comparison in RFC 3261”

RFC 6026“Correct Transaction Handling for 2xx Responses to SIP INVITE Requests”

RFC 7118“The WebSocket Protocol as a Transport for SIP”

JsSIP User Agent是JsSIP的核心元素,代表一个关联的SIP帐号的SIP客户端。JsSIP User Agent在JsSIP.UA class中定义。在同一个Web应用中,可以创建多个JsSIP User Agents。这在同一Web应用中运行多个不同的SIP帐号的情况下十分有用。

6 结 语

Google认为,支持互联网的核心技术如HTML、HTTP和TCP/IP是开放免费的,互联网也因此繁荣,所以音视频技术也必须免费且高质量。因此,WebRTC是变革者,将彻底改变media engines市场。

[1] 聂晓飞.基于WebRTC的跨平台视频会议系统的设计与实现[D].北京:北京交通大学,2014.NIE Xiao-fei.Design and Implementation of Crossplatform Video Conference System Based on WebRTC[D].Beijing:Beijing Jiaotong University,2014.

[2] 何明亮.WebRTC技术的研究与应用[D].南京:南京邮电大学,2014.HE Ming-liang.Research and Practice of the WebRTC Technology[D].Nanjing:Nanjing University of Posts and Telecommunication,2014.

[3] Bergkvist A,Burnett D C,Jennings C,et al.WebRTC1.0:Real-timeCommunication Between BrowsersW3C Editor’s Draft03[Z].2013.

[4] 陈龙明.基于JXTA和WebRTC的视频会议系统设计与实现[D].合肥:中国科学院大学,2013.CHEN Long-ming.Design and Implementation of Video Conference System Based on JXTA and WebRTC[D].Hefei:University of Chinese Academy of Sciences,2013.

[5] Burnett D C,Narayanan A.Media Capture and Streams,W3CEditor’s Draft 30[Z].2013.

[6] 孙进宝.基于WebRTC的混音服务器的研究与设计[D].西安:西安电子科技大学,2014.SUN Jin-bao.Research and Design of WebRTC Based Mixer Server[D].Xi’an:Xidian University,2014.

猜你喜欢

开发者浏览器网页
基于HTML5与CSS3的网页设计技术研究
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
“85后”高学历男性成为APP开发新生主力军
16%游戏开发者看好VR
浏览器