VOIP 服务器最重要的核心功能之一就是如何能够保证软交换能够正确路由呼叫。开源软交换Kamailio/OpenSIPS可以通过DROUTING 模块来实现对不同呼叫进行不同的路由。今天,我们在本讲座中,通过一个简单示例来演示如何通过DROUTING模块结合界面配置实现路由呼叫。
1
在本次示例演示中,用户通过OpenSIPS注册的分机对不同号码进行呼叫,然后通过路由模块路由到相应的语音服务器。这里,我们假设用户可以拨打美国或者欧洲的号码,落地语音服务器安装了Asterisk或者FreeSWITCH(这里我们不再介绍如何安装配置Asterisk或者FreeSWITCH),对呼入电话进行语音播放。如果需要出局,则可以安装语音网关或者sangoma 语音板卡支持出局功能。另外,特别提醒,系统通过第一个网关走prefix=1的路由;通过第二个网关则prefix=55的路由。
2
为了实现路由模块的管理,我们需要调整结构配置文件和界面设置来实现此需求。
首先,需要加载路由模块:
loadmodule "drouting.so"
然后,加载模块所需要的参数设置:
modparam("drouting", "use_domain", 0)
modparam("drouting","db_url",
"mysql://opensips:opensipsrw@localhost/opensips") // 数据库配置
# ----- tm params -----
modparam("tm", "fr_timeout", 3)
modparam("tm", "fr_inv_timeout", 20) // 超时设置
设置呼叫路由管理:
route[4] {
xlog("routed using drouting");
# routing to the pstn
if(!do_routing("0")) {
sl_send_reply("500", "No routes available");
exit;
}
## for INVITEs enable some additional helper routes
if (is_method("INVITE")) {
t_on_branch("2");
t_on_reply("2");
t_on_failure("2");
}
if (!t_relay()) {
sl_reply_error();
}
exit;
}
failover 设置路由处理策略:
failure_route[2] {
if (t_was_cancelled()) {
exit;
}
xlog("failure route 2\n");
if (t_check_status("(408)|(5[0-9][0-9])")){
if (use_next_gw()) {
xlog ("next gateway $ru \n");
t_on_failure("2");
t_relay();
exit;
}
t_reply("503", "Service not available, no more gateways");
exit;
}
}
通过界面配置gateway:
通过配置界面配置呼出的路由前缀:这里1表示呼叫美国,55表示呼叫欧洲或者其他呼叫的区号:
最后,执行“Apply Changes to the Server”保存配置。用户可以拨打号码,例如:0111XXXXXXXX, 或者01155XXXXXXXX号码测试。如果设置正确的话,用户可以听到媒体服务器播放的语音提示,表示已经呼叫到此媒体服务器。另外,如果需要出局测试,用户可以通过PRI转入到呼出路由设置。
3
如果用户需要测试failover功能的话,需要首先修改界面配置。具体配置如下:
然后关闭其网关地址,设置一个127.0.0.1地址段:
确认保存成功以后,用户可以测试呼叫01155XXXXXXXX。如果设置成功的话,此网关会出现失败错误,通过failover路由到第二个网关地址。用户会听到第二个媒体网关播放的语音提示音。
4
在本次讲座中,我们重点介绍了如何使用路由模块来实现对媒体服务器的路由功能。在本次讲座中,用户可以通过分机拨打不同的号码来进行呼叫测试,最后,软交换通过不同号码匹配路由到相应的第三方媒体服务器。在配置中,需要加载DROUTING来实现此功能,同时用户需要配合界面管理来配置网关设置和逃生设置功能。通过此示例,用户可以基本了解软交换路由的技术流程,并且可以简单设置一个测试呼叫来进行更加复杂的环境测试。
领取专属 10元无门槛券
私享最新 技术干货