FreeSWITCH continue_on_fail

先看一段简单的dialplan:

<action application="set" data="continue_on_fail=true"/>
<action application="bridge" data="user/1001"/>
<action application="log" data="ERR run here"/>
<action application="bridge" data="user/1002"/>

设置continue_on_fail为true之后,如果呼叫用户1001失败,fs会继续执行,也就是先打印日志,再呼叫用户1002

反之,如果continue_on_fail不为true(默认值),log和bridge这二个app就没有执行的机会了

continue_on_fail这个名字起的不错

当然也可以指定hangup cause的列表:

<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> 

<action application="bridge" data="user/1001"/>
<action application="log" data="ERR hcause = ${originate_disposition}"/>

<action application="log" data="ERR sip status code = ${sip_invite_failure_status}"/>
<action application="bridge" data="user/1002"/>

留意originate_disposition和sip_invite_failure_status这二个通道变量


顺便普及下fs常识

fs是b2bua server,这意味着uac(主叫)跟fs协商,比如编码是PCMA, uas(被叫)跟fs协商,比如编码是PCMU,主叫和被叫的编码可以不同,可以这样实现:

<action application="set" data="absolute_codec_string=PCMA"/>
<action application="bridge" data="[absolute_codec_string=PCMU]user/1001"/>

如果dialplan是这样配置:

<action application="bridge" data="user/1001"/>

现在jssip透过fs呼叫microsip

jssip默认编码可能是opus+pcma+pcmu等等

fs如果是默认配置,那么fs自动跟jssip协商成opus编码,然后用这个编码(单个编码)跟microsip去协商,但如果已经配置了通道变量呼入呼出混合编码(media_mix_inbound_outbound_codecs为true),那么fs会offer多个编码跟microsip协商

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值