开发目标是实现一个简单的IVR程序,通过SIP协议注册到类似于FreeSwitch的语音平台上,拨打此IVR流程可以播放语音、收取按键。开发之前先准备点必要的背景知识。
VoIP
VoIP是一种透过互联网或其他使用IP技术的网络,来实现语音通讯和多媒体会话的方法和技术集合。因特网电话特指在公用因特网而不是PSTN上提供通信服务(包括语音、传真、短信和语音信箱等)。发起VoIP通话的方法和原理与传统的数据字化电话相似,包括信令、通道建立、模拟语音信号的数字化和编码等。与在电路交换网路上传输相比,在包交换网路上数字信息被封包以IP包形式传输。与时分复用网络相比包交换网络意味着更多关于资源管理方面的考虑。
信令
相关信令有:国际电信联盟(ITU-T)于一九九六年提出的H.323,互联网工程任务组(IETF)于一九九九年三月提出的会话发起协议(SIP),互联网工程任务组(IETF)于一九九九年八月提出的媒体网关控制协议(MGCP),以及二者共同推出的媒体网关控制协议(MEGACO-MEdia GAteway COntrol)。
H.323是常见的VoIP标准,由国际电信联盟(ITU-T)于一九九六年提出,原本是用于局域网路(LAN)上的视讯会议,后来被应用于VoIP网络电话上。H.323定义了一个综合性的规范,使网络上的终端设备遵循这些规范,得以顺利进行沟通,包括语音压缩格式(G.711、G.729、G.723.1)、影像压缩格式(H.261、H.263)、呼叫信令(H.225)、控制信令(H.245)、注册与认证等(RAS:Registeration Admission Status)。H.323架构由4个元素所组成,包括终端设备(Terminal)、网管(Gateway)、网关管理员(Gatekeeper)、多点控制单元(MCU:Multipoint Control Unit),可进行单点对单点或单点对多点的通讯。
对于VoIP的应用而言,H.323的子协议多且复杂性高,在许多技术上的问题受限,不容易针对新的应用作扩展。因此,互联网工程任务组(IETF)分别在一九九九年八月提出媒体网关控制协议(MGCP-Media Gateway Control Protocol)与一九九九年三月的会话发起协议(SIP-Session Initiation Protocol)新架构,试图简化H.323的复杂性,且在语音传递功能上提供较高的延展性。
会话发起协议(SIP)是互联网工程任务组(IETF)创建VoIP通话连接的协议标准。会话发起协议(SIP)是一种应用层控制协议,用于和一个或多个参与者创建、修改和终止会话。会话发起协议(SIP)的结构与超文本传输协议(HTTP)相似。客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机回送一个响应。请求与响应形成一次交换(transaction)。
媒体网关控制协议(MGCP)是由思科和Telcordia提议的VoIP协议,它定义了呼叫控制单元(呼叫代理或媒体网关)与电话网关之间的通信服务。媒体网关控制协议(MGCP)属于控制协议,允许中心控制台监测IP电话和网关事件,并通知它们发送内容至指定地址。在媒体网关控制协议(MGCP)结构中,智能呼叫控制置于网关外部并由呼叫控制单元(呼叫代理)来处理。同时呼叫控制单元互相保持同步,发送一致的命令给网关。
媒体网关控制协议(MEGACO-MEdia GAteway COntrol)是互联网工程任务组(IETF)和国际电信联盟(ITU-T)(ITU-T H.248建议)共同努力的结果。Megaco/H.248是一种用于控制物理上分开的多媒体网关的协议单元的协议,从而可以从媒体转化中分离呼叫控制。Megaco/H.248说明了用于转换电路交换语音到基于包的通信流量的媒体网关(MG)和用于规定这种流量的服务逻辑的媒介网关控制器之间的联系。Megaco/H.248通知媒体网关将来自于数据包或单元数据网络之外的数据流连接到数据包或单元数据流上,如实时传输协议(RTP)。从VoIP结构和网关器控制的关系来看,Megaco/H.248与MGCP在本质上相当相似,但是Megaco/H.248支持更广泛的网络,如ATM。
rtpRFC3550
sdpRFC2327
编码方案G.711G.723.1G.729
sip
sip介绍。
sip server
列举一些常见的开源SIP Server。
Vocal
opensips
freeswitch
asterisk
SER
sipX
sip client
列举一些常见的开源或免费的SIP Client。
zoiper,免费,支持iOS。
xlite,免费,支持windows。
sipdroid,开源,支持Android。地址,http://code.google.com/p/sipdroid/downloads/list
sip stack
osip
sofia sip
rtp stack
jrtplib
ortp