FreeSWITCH Gateway
1、配置网关
配置网关gw1
1 <include> 2 <gateway name="gw1"> 3 <param name="username" value="90231"/> 4 <param name="realm" value="112.242.28.98:5060"/> 5 <param name="password" value="123456"/> 6 </gateway> 7 </include>
配置好后,重新加载配置文件。使用下面命令查看网关是否注册成功:
1 sofia status gateway
2、路由配置
2.1 认证模式下路由配置
1 <extension name="Call-Out"> 2 <condition field="destination_number" expression="^9(\d+)(x*)$" require-nested="false"> 3 <action application="bridge" data="sofia/gateway/gw1/$1"/> 4 </condition> 5 </extension>
2.2 非认证模式下路由配置和认证下路由配置相同
1 <extension name="Call-Out"> 2 <condition field="destination_number" expression="^9(\d+)(x*)$" require-nested="false"> 3 <action application="bridge" data="sofia/gateway/gw1/$1"/> 4 </condition> 5 </extension>
2.3 没有网关时直接指向IP
1 <extension name="Call-Out"> 2 <condition field="destination_number" expression="^9(\d+)(x*)$" require-nested="false"> 3 <action application="bridge" data="sofia/internal/112.242.28.98:5060/$1"/> 4 </condition> 5 </extension>
2.4 其它情况
有时候网关在内网,而FreeSWITCH在公网,FreeSWITCH无法直接指向内网地址,也无法注册到网关设备上。这时需要用到NAT,让内网网关注册到FreeSWITCH上。内网注册过去后,会在路由器上做一个内外网端口映射。FreeSWITCH无法直接到达网关,但是通过外网端口则能到达内网网关了。此时假设内网以分机9999注册到FreeSWITCH上(当然也可以用别的方式来做,比附路由器上做端口映射,内网和外网做端口映射,不过这种方式不够灵活)。
在FreeSWITCH的console调用:
1 sofia_contact 9999
得到结果:
1 sofia/internal/sip:9999@112.242.28.98:5060
从这里我们可以知道网关对应的外网地址和端口,那只要把呼叫信息发到112.242.28.98:5060即可。
1 <extension name="Call-Out"> 2 <condition field="destination_number" expression="^9(\d+)(x*)$" require-nested="false"> 3 <action application="bridge" data="${regex(${sofia_contact(internal/9999@${domain_name})}|^(.+)sip:(.+)@(.+)|%1sip:$1@%3)}"/> 4 </condition> 5 </extension>