设为首页 收藏本站
开启辅助访问 切换到宽版
注册会员 找回密码

VoIP88

toasterisk 发表于 2011-6-13 22:13 | 显示全部楼层 |阅读模式
注:以下文章如需转载,请注明所属作者,转载地址,谢谢!

感谢开源的热心人, 具体的链接在这里:http://blog.csdn.net/speedingboy/archive/2010/08/01/5780670.aspx
为了更好地让开源项目成功推广,voip88 只是转载内容。原文请登录以上博客。

检查配置文件(Ispecting the Configureation File)
我们的脚本正变得难以debug。现在,让我们介绍XLOG模块。它实现了XLOG函数。这个函数与LOG()函数很相似,但是它允许你在消息中使用诸如请求URI($ru)的伪变量。下面有一个使用XLOG的例子。
loadmodule "xlog.so"
xlog("L_ERR","Marker 480 ruri=<$ru>");
你可以使用下面的命令来检查最近的XLOG消息:
tail /var/log/syslog
在呼叫盲转中,只有一开始的INVITE消息会被处理,了解这一点是很重要的;我们能够安全地对请求URI和通话进行修改,append_branch不需要被调用。
另一方面,对于忙线时和无人接听时的呼叫前转,在开始的INVITE失败后,要在这时派生消息你就必须要执行append_branch()函数。
t_on_failure(“1”);
t_on_failure()函数告诉OpenSER如果(negative/unsuccessful replies)这些出错状况发生了,就要去处理之。在本上下文中的出错状况是那些以4××和5××开头的错误信息。在调用t_relay()函数之前当你调用t_on_failure时,要告知OpenSER当收到出错信息时将控制权转给failure_route[1]
failure_route[1] {
##--
##-- If cancelled, exit.
##--
if (t_was_cancelled()) {
exit;
};
failure_route的第一部分处理487 cancelled消息。这个脚本对于此类信息只是简单将处理终止。接下来我们将处理busy消息。
##--
##-- If busy send to the e-mail server, prefix the "b"
##-- character to indicate busy.
##--
if (t_check_status("486")) {
revert_uri();
prefix("b");
xlog("L_ERR","Stepped into the 486 ruri=<$ru>");
rewritehostport("192.168.1.171");
append_branch();
route(1);
exit;
};
如果状态变为486,那么执行的动作就是还原URI486是对于INVITE请求的一个出错消息),URI以“b”打头(告知语音邮箱系统要播放线路正忙的消息)并重写主机地址,将消息发送给语音邮箱系统。调用append_branch()来将目的地址添加到请求中。相同的处理逻辑被应用在对消息408480的处理上。
##-- If timeout (408) or unavailable temporarily (480),
##-- prefix the uri with the "u"character to indicate
##-- unanswered and send to the e-mail
##-- sever
##--
if (t_check_status("408") || t_check_status("480")) {
revert_uri();
prefix("u");
xlog("L_ERR","Stepped into the 480 ruri=<$ru>");
rewritehostport("192.168.1.171");
append_branch();
route(1);
exit;
};
Asterisk服务器上的extesions.conf配置文件要写成下面这样。语音邮箱帐号要创建成同OpenSER上的帐号相符。你也可以整合两个数据库以避免维护双数据库入口,具体请参考http://www.voip-info.org/wiki/view/Realtime+Integration+Of+Asterisk+With+OpenSER上面的教程。
#extensions.conf file
[default]
exten=>_9.,1,Dial(ZAP/g1/${EXTEN})
exten=>_9.,2,hangup()
exten=>_u.,1,Voicemail(u${EXTEN})
exten=>_u.,2,hangup()
exten=>_b.,1,Voicemail(b${EXTEN})
exten=>_b.,2,hangup()
实验——测试呼叫前转特性(Lab——Testing the Call Forward Feature)
要完成这个实验,对于语音邮箱部分的整合需要asterisk方面的一些经验。这个实验实现起来有些难度。有些IP电话很难发送出busy消息,因为它们有不止一条线路。在获得“486” busy消息之前,要使用所有的线路对于这个实现的成功是很重要的。有一种SNOMip电话,具有一个busy按钮用来告知用户电话正忙。为了降低实验难度和复杂性,我们将减少INVITE的超时时间。在产品的环境上,去掉这些语句。
modparam("tm", "fr_timer", 5)
modparam("tm", "fr_inv_timer", 20)
步骤1:测试无人应答的呼叫前转
1000呼叫1002。这通电话应该捎带着“不可得消息”(unavailable message)转向语音邮箱系统。
步骤2:测试忙线呼叫前转。
1003摘机。用1000呼叫1003。这通电话应该捎带着“忙线消息”(busy message)转向语音邮箱系统。
概要(Summary)
这一章中,我们学会了如何使用AVPs来处理诸如呼叫前转之类用户喜好(user preferences)。使用failure_route允许我们实现两种通常情况下的呼叫前转,忙线和无人应答。最后我们还学会了如何将此类消息发送到外部的语音邮箱系统,譬如asterisk服务器。


结束语:这本书就翻译到这里了,有了上面的对openser的基本认识,我想,再通过实践和opensips官网的文章的洗礼,相信大家都能够对opensips掌握了。

tgerj 发表于 2013-3-26 08:00 | 显示全部楼层
这话从何说起那~~~












哈哈,这个cf体验服挤频器下载,cf体验服挤频器很不错啊 crsky.com/soft/34709.html
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|VoIP88 ( 粤ICP备11095982号   填写您的邮件地址,订阅我们的精彩内容:

GMT+8, 2017-9-24 18:33 , Processed in 0.283678 second(s), 23 queries .

Powered by VoIP88

© 2001-2017 VoIP88

快速回复 返回顶部 返回列表