随着互联网+在层面的战略实施,在不久的将来,越来越多的传统企业将会结合互联网优势(大数据、云计算、物联网等)来升级现有商业模式或者创造新的商业模式,而这其中,通信则是为基础,也是为关键的一个环节。
  电子邮件、短信等旧有形式的信息通知,在到达率、转化率、安全性等方面已经逐渐不能满足业务方的需求,于是越来越多的业务方转而采用语音通信的方式,也许你们已经或者有可能要进行这方面的转变,那么希望这篇文章能够给你带来一些帮助。
  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测试通常包括覆盖率测试、语音质量测试、安全测试、稳定性测试、性能测试等,由于篇幅问题,本文只介绍覆盖率及语音质量测试。
  所谓的覆盖率测试,即需要将通话覆盖到全球或者各大主要城市,用来测试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 ");
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.." ");
end
end