随着互联网+在国家层面的战略实施,在不久的将来,越来越多的传统企业将会结合互联网优势(大数据、云计算、物联网等)来升级现有商业模式或者创造新的商业模式,而这其中,通信则是最为基础,也是最为关键的一个环节。
电子邮件、短信等旧有形式的信息通知,在到达率、转化率、安全性等方面已经逐渐不能满足业务方的需求,于是越来越多的业务方转而采用语音通信的方式,也许你们已经或者有可能要进行这方面的转变,那么希望这篇文章能够给你带来一些帮助。
1.什么是SIP,为什么要了解SIP测试
一般来说,我们可以把当今的通信网络,大致分为两种,一种是IP网络,另一种是PSTN网络(俗称电话网),如何把这两种网络互联在一起,有多种解决方案,SIP便是其中的一种。
SIP(Session Initiation Protocol,会话发起协议)是用于VoIP(Voice over IP,网际协议通话技术)最主要的信令协议之一,承载了SDP(Session Description Protocol,会话描述协议)内容,SDP协议描述了会话所使用流媒体细的节,如:使用哪个IP端口,采用哪种音视频编解码等等。
通过SIP发起的通话呼叫,我们可以获取到通话的响铃时长、接听时长、挂断时间点、未接听原因、未接通原因、通话时输入的按键等通信元信息,而这些元信息对于解决业务方日益变化和增长的需求,十分重要。依托开源的SIP服务器,我们不必再使用昂贵的硬件设备,使用软交换的形式也可以获得企业级硬件解决方案的效果,而且更便于需求的定制。
2.SIP测试包含哪些内容
所谓的覆盖率测试,即需要将通话覆盖到全球或者全国各大主要城市,用来测试SIP请求落地PSTN网络的线路覆盖情况。
而语音质量测试,则是SIP请求落地PSTN网络后,实际的一个通话语音质量的测试。这部分主要包括系统评分以及人为评分。
3.如何自动化发起语音呼叫
不管是覆盖率测试还是语音质量测试,我们都需要通过SIP服务器来对全球或者全国各大主要城市的电话发起呼叫。
在本文中,我们使用的是一款开源的SIP服务器-FreeSWITCH,该服务器内置lua脚本支持,因此我们可以使用lua脚本来自动化发起语音呼叫。
其中具体执行呼叫的方法体如下:
function call( callee ) --呼叫字符串 local callStr = "这里是具体的呼叫字符串" --呼叫时长限制 单位秒 local timeout = 20 --日志打印呼叫字符串 freeswitch.consoleLog("err",callStr) --建立会话 local callSession = freeswitch.Session(callStr) --支持sched_hangup 在指定的时长之后,终止会话 callSession:execute("sched_hangup","+"..timeout.." alloted_timeout") --会话建立成功或者失败的分支处理 if( callSession:ready() ) then freeswitch.consoleLog("notice", "call success\n"); callSession:execute("echo"); else local cause = callSession:hangupCause(); local causeQ850 = callSession:getVariable("hangup_cause_q850") or ''; freeswitch.consoleLog("notice", "call fail,cause:"..cause..",causeQ850:"..causeQ850.."\n"); end end |