Asterisk里调试SIP确实挺麻烦的,一般使用另外的网络协议分析工具。从1.8版本开始,可以直接在Dialplan里拿到详细的SIP交互信息,从而更加准确地获取拨号状态、网络状态、用户状态(UA)等。 gxmc|
以前版本里,拨号后的状态DIALSTATUS一般返回值有ANSWER、BUSY、NOANSWER、CANCEL、CONGESTION、CHANUNAVAIL、DONTCALL、TORTURE、INVALIDARGS。 # X/Q
我们都经常被CONGESTION这个返回值困扰。几乎每个呼叫故障都返回CONGESTION。这是因为Dial()函数适用很多种协议,SS7,Zap,SIP,IAX等等,因此不能返回某个协议指定的信息,比如SIP 404 响应。 G),db%,X2
Asterisk 1.8 增加了一个功能,可以从Dialplan里面调用 {HASH(SIP_CAUSE,<channel-name>)}来获取具体的SIP响应信息,不仅是拨号状态,也可以是挂机原因(${HANGUPCAUSE})。 sRq U]i8l
Asterisk 1.8还新增了一个'use_q850_reason' 配置选项来生成和分析Q.850协议信息。"Reason: Q.850;cause=<cause code>" 可以更好地通过SIP来传递 PRI/SS7原因编码。 Rd%0/ B
具体应用在哪些场合呢? kcS6_l
* 比如你有一些中继网关(SIP <-> ISDN或者SIP <-> SS7),当然希望能够监测真正的“congestion”信令,以便路由到其它的中继网关上。但是如果每个呼叫失败的消息都反馈成“CONGESTION“,就不可能实现这个功能。 +< KNY
* 你的电话听筒不能给用户显示SIP错误响应信息,所以你需要使用信号音。比如Cisco 7960 SIP总是无用地响着重拨信号音 "boop, boop, boop, boop",无论对任何SIP呼叫建立故障都一样。美国的"Reorder"信号音并不是手机上的惯例,听起来很像英国的忙音。这让用户无法判断到底哪里出了问题。 2xTT)9Tq*
* 如果你不想依赖电话听筒,而是通过SIP错误代码来提供更加一致的用户体验。在调用Dial()之前先调用Answer()让Asterisk摘机,然后使用Playtones() Wait() 来播放地区特定的呼叫进展信号音。
Asterisk 1.8 Dialplan里获取SIP响应编码
原创上一篇:线程池
下一篇:Radius 报文解释
-
JS选择图片获取base64编码预览图片
通过将图片转为data url的base64格式编码,实现直接预览图片
图片预览 base64 dataurl 图片转base64 -
Asterisk 1.8 sip 协议栈分析
协议栈初始化:load_module() 函数加载SIP配置信息,解析sip.conf挂载到全局变量中。
socket branch methods struct command -
Asterisk 1.8 sip 协议栈分析 2
上一篇文章分析了 sip注册消息的流程,下面分析一下 invite请求的处理流程
processing audio allocation authentication domain -
Asterisk sip canreinvite
Asterisk sip.conf, peer definition: canreinvite option <
audio stream codec path up -
Asterisk SIP channels
SIP Channel Module <br />The SIP Channel Module enables Asterisk to ceives and
header server command domain variables -
Asterisk sip event MWI
<br />Interested in VOIP,
server blog ide .net -
Asterisk SIP media path
<br />In a normal SIP proxy, the server is not involved in the media between the phones. With Asteris
path codec variables redirect stream -
Asterisk SIP NAT solutions
Asterisk, SIP and NAT <br /><br />Asterisk can both act
server express network allocation newline -
Asterisk 1.8 队列 分析
上一篇文章 讨论了 invite请求最终 走到 dialplan,走到拨号方案后 具体做什么动
interface 数据库 variables application struct -
Asterisk SIP user vs peer
<br />Asterisk SIP 'users' and 'peers' are have been t
user behavior list sed -
Asterisk config sip.conf
<br />Configuration file for Asterisk SIP channels, for both inbound and outbound calls. Starting with
extension cisco documentation user server