
1、在本示例中,我们使用了AVP和Serial Forking,用户需要创建两个分机,然后对接一个媒体服务器来进行实验。在此实验中,我们需要执行和配置相关的文件来保证环境能够正常运行。
2、在配置流程中,用户首先需要添加一个avp指向外部的媒体服务器和分机邮箱号码。执行的命令如下:
opensipsctl avp add –T usr_preferences 1004@proxy_ip callfwd 0 sip:2345678@proxy_ip
// 注意,这里的proxy_IP 是外部媒体服务器的地址,1004 支持了一个语音邮箱。用户需要提前预设好此媒体服务器。
在cfg文件中,添加需要加载avp 检测:
if(avp_db_load("$ru","$avp(callfwd)")) {
$ru=$avp(callfwd);
xlog("forwarded to: $avp(callfwd)");
}
添加busy状态检测和处理流程:
if (t_check_status("486")) {
revert_uri();
prefix("b"); # 表示通知系统播放状态忙信息
xlog("L_ERR","> 486 ruri=<$ru>");
route(media);
route(relay);
exit;
}
// 处理无应答流程:如果超时(408)或者临时不在线(480)
if (t_check_status("408") || t_check_status("480")) {
revert_uri();
prefix("u");# 表示播放无应答消息提示
xlog("L_ERR","> 480 ruri=<$ru>");
route(media);
route(relay);
exit;
}
3、保存以上配置,如果配置成功的话,我们可以使用分机1000 呼叫1004进行测试,此呼叫会转到我们的媒体服务器网关。这里大家要注意,因为,我们在第一部中已经指向了外部的媒体服务器。
然后,我们可以进行遇忙前转的处理测试。用户可以从1000分机呼叫1001,1001如果拒绝此呼叫后,会收到一个 “486 Busy here”。这里,用户可以很多免费的软电话进行拒绝呼叫测试。
如果用户1004 呼叫1001时,在一定时间内没有接听,会转向一个此时处理。超市以后则进入到了语音邮箱留言。超时设置可以通过参数:
modparam(“tm”, “fr_inv_timeout”, 10) // 默认为30秒。
4、在本讲座中,我们讨论了关于如何使用开源软交换设置呼叫前转的处理方式,包括超时处理和遇忙设置。在此示例中,我们重点使用了avp和状态监测的一些方法。同时,需要用户添加一个新的avp指向外部的媒体服务器。通过此示例,用户可以使用软交换和媒体服务器的语音邮箱集成实现呼叫前转功能实现相对简单呼叫量大的需求。当然,在具体的使用环境中,用户的场景可能更加复杂,例如分机随行等或者转接其他分机或者移动端等功能。这样的需求需要和媒体服务器做进一步的融合才能满足。


关注微信公众号:asterisk-cn,获得有价值的行业分享
freepbx 技术论坛:www.ippbx.org.cn
Asterisk, freepbx技术文档: www.freepbx.org.cn
欧米(Omni)智能客服解决方案
融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com