使用FreeSwitch进行SIP对讲 和 RTP组播
FreeSwitch简介
FreeSwitch是一个开源的电话软交换平台,从一个简单的软电话客户端到运营商的软交换设备几乎无所不能,FreeSwitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。FreeSwitch具有很强的伸缩性。旨在为音频、视频、文字或任何其他形式的媒体,提供路由和互连通信协议。它创建于2006年,填补了许多商业解决方案的的空白。FreeSWITCH的也提供了一个稳定的电话平台,许多广泛使用的免费电话就是在使用它开发的,但是它不支持视频通话。
FreeSwitch能原生地运行在Windows、Max OS X、Linux、BSD 及 solaris 等诸多32/64位平台,可以用作一个简单的交换引擎、一个PBX,一个媒体网关或媒体支持IVR的服务器等。它支持SIP、H323、Skype、Google Talk等协议,并能很容易地与各种开源的PBX系统如sipXecs、Call Weaver、Bayonne、YATE及Asterisk等通信。FreeSWITCH 遵循RFC并支持很多高级的SIP特性,如 presence、BLF、SLA以及TCP、TLS和sRTP等。它也可以用作一个SBC进行透明的SIP代理(proxy)以支持其它媒体如T.38等。FreeSWITCH 支持宽带及窄带语音编码,电话会议桥可同时支持8、12、16、24、32及48kHZ的语音. 而在传统的电话网络中,要做到三方通话或多方通话需要通过专门的芯片来处理,其它像预付费,彩铃等业务在PSTN网络中都需要依靠智能网(IN)才能实现,而且配置起来相当不灵活。
获取FreeSwitch
本文档不是详细介绍FreeSwitch理论的文章,而是讲其在实际中的应用的文章。FreeSwitch的各种版本的源码可以在一下的网址下载:
http://wiki.freeswitch.org/wiki/Download_FreeSWITCH
Windows用户可以直接下载编译好的安装文件
https://files.freeswitch.org/windows/installer/x64/FreeSWITCH-1.8.7-x64-Release.msi
下载后点击安装,安装完成执行FreeSwitchConsole.exe便启动了此服务器,其配置文件在C:\Program Files\FreeSWITCH\conf。
服务器启动后界面如图1所示.
图1 FreeSwitch启动后界面
FreeSwitch的配置
FreeSwitch默认设置了20个用户,如果需要更多的用户,那么只需要简单的三步就可以完成。
- 在conf/directory/default/中增加一个用户配置文件
- 修改拨号计划(Dialplan)使其它用户可以呼叫它
- 重新加载配置使其生效
例如,要添加用户Jack,分机号是1020,只需要到conf/directory/default目录下,将1000.xml拷贝到1020.xml,然后打开1020.xml,将所有1000都改为1020,并把effective_caller_id_name的值改为Jack,然后保存退出。
如:<variable name="effective_caller_id_name" value="Jack"/>
接下来,打开 conf/dialplan/default.xml,找到<condition fied=“destionation_number” expression=“^(10[01][0-9]) $” > 行,将其改为:<condition field=“destionation_number” expresstion=“^(10[01][0-9]|1020) $” >保存退出,回到控制台,然后执行reloadxml命令或按快捷键F6,使新的配置生效,那么新用户1020便添加成功。
如果你在某个运营商拥有SIP账号,你可以配置拨打外部电话,由于这不是本文介绍的重点,所以不作详细介绍。
安装配置SIP软电话PortGo Professional
PortGo Professional具有直观的界面,易于使用,易于使用,是一款免费的SIP软电话软件。它支持SIP,并与大多数主要VOIP供应商和ITSP完全可互操作。
下载地址:
https://www.portsip.com/download-portsip-softphone/
下载后点击安装,安装完成执行PortGo Professional.exe,便启动了此SIP软电话
FreeSwitch默认配置了1000~1019共20个用户,你可以随便选择一个用户进行配置(相当于已经在此服务器下注册了20个用户,用户名分别是1000、1001、……),下面就将来测试这个服务器,这里我们可以选用支持SIP协议的PortGo Professional来测试。执行PortGo Professional.exe,填入以下参数:
用户名: 1000
密码: 1234
服务器: Freeswitch软件所在电脑的IP地址
端口:5060
其它都是用默认设置,点登陆就可以了。
图2 软电话登录界面
SIP设备的配置
1、进入“* \Operation Tutorial\软件” 文件夹,解压并运行Manager.exe软件,双击进入SIP设备(设备名称:Dev01)属性界面,点击“基本参数”,设置设备的IP地址、网关、子网掩码以及DNS服务器。
2、点击“账号信息”,填入SIP设备的显示名称、用户名称、用户密码和SIP服务器IP地址及其服务器端口。这里可以用Freeswitch的默认用户名和密码
显示名称:1001
用户账号: 1001
用户密码: 1234
服务器地址: Freeswitch软件所在电脑的IP地址
服务器端口:5060
其它参数使用默认的出厂参数即可
3、在对讲设置和组播设置中可以配置SIP设备的对讲以及组播喊话参数,一般用默认即可。
4、设置“按键定义”,可以对SIP设备的按键功能进行配置(SIP对讲/IP直呼/组播)
这里我们设置呼叫目标为SIP软电话,即填入SIP软电话在Freeswich上的用户账号(1000)即可
SIP测试
1、语音通话
测试1
在SIP软电话上输入SIP设备的的用户账号(1001),然后点击呼叫按键或者按下回车按键,SIP软电话就会呼叫拨打1001(SIP设备)。在默认的振铃声后(振铃时长可在Manager上设置),SIP设备自动接听,之后双方可以进行SIP对讲通话。
图3 软电话拨打界面
测试2
前文我们已经设置了SIP设备的呼叫目标为SIP软电话(1000),此时短接SIP设备的呼叫接口(C1 and COM),SIP设备就会呼叫拨打1000(SIP软电话)。在SIP软电话提示有来电呼入后,SIP软电话点击接听按钮,之后双方可以进行SIP对讲通话。
2、RTP组播
进行RTP组播设置,先要设置SIP设备的监听RTP组播地址,设备会监听网络上指定的RTP组播地址,当发送端发送RTP组播流时,SIP设备会自动接收并播放
测试1
设置监听组播地址,点击进入之前预设好的组播地址列表,当网络中有其它SIP设备发起同一组的组播时,本SIP设备会监听接收并自动播放该音频信号。
点击红色方框的 … 按钮,在弹出界面中,添加组播地址和端口号,之后选择组播地址。然后再点击确认。
监听组播地址有10组(1组最低,10组最高),优先级高的组播可以打断优先级低的组播。
通过上述设置,SIP设备监听并播放224.5.6.20:10008这个组播流,现在下一步设置Freeswitch向该地址发送一个RTP流。
这个需要将Freeswitch的默认组播地址设置成224.5.6.20,端口号10008,而在Freeswitch默认配置中, 拨打号码7243就直接向默认地址发送组播。
在Freeswitch安装目录下,打开\conf\dialplan\default.xml文件
<extension name="rtp_multicast_page">
<condition field="destination_number" expression="^pagegroup$|^7243$">
<action application="answer"/>
<action application="esf_page_group"/>
将这部分内容改成如下所示
<extension name="rtp_multicast_page">
<condition field="destination_number" expression="^pagegroup$|^7243$">
<action application="answer"/>
<action application="esf_page_group" data="224.5.6.20 10008 6001"/>
这样设置过后,就将Freeswitch的默认组播地址设置成224.5.6.20,端口号10008,然后在SIP软电话上拨打号码7243就直接向默认地址发送组播。
测试2
将另外一个SIP设备(设备名称:Dev02)上电,在Manager软件里进入设备属性界面,点击“按键定义”,设置Key1为采播,点击进入之前预设好的组播地址列表,选择组播目标为224.5.6.20:10008。
短接SIP设备(Dev02)的呼叫接口(C1 and COM),SIP设备(Dev02)就会将麦克风(或Line in)输入采集到的模拟音频编码成数字信号,然后将RTP包发送到组播地址224.5.6.20:10008。
- 12-03
- 12-03
- 11-28
- 11-28
- 11-15
- 11-15
- 11-15
- 11-15
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
- 07-15
- 07-10