双线路呼叫(主备)

双线路呼叫(主备)

1 需求

主线路呼叫失败,则使用备用线路外呼。

2 变量说明

变量名称 用途
continue_on_fail bleg拨号失败后是否继续执行,不继续则直接挂断aleg。
hangup_after_bridge  bleg挂断后是否挂断aleg。
transfer_after_bridge bleg挂断后,aleg transfer至目的
park_after_bridge  bleg挂断后,aleg是否park,esl开发接口非常有用
exec_after_bridge_app  bleg挂断后,aleg执行一个APP
api_after_bridge  bleg挂断后,aleg执行一个API

 

2.1  continue_on_fail

控制无法接通被叫方(忙/离线)时发生的情况。如果为true则拨号计划继续被处理。如果为false则拨号计划停止处理。可以包含将继续失败的返回消息。

<action application="set" data="continue_on_fail=true"/>
<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,NO_ROUTE_DESTINATION"/>
<action application="bridge" data="{transfer_after_bridge=你的流程}sofai/external/$1@gateway" />

或者使用Q.850原因代码

<action application="set" data="continue_on_fail=3,17,18,27"/>

2.2 hangup_after_bridge

 控制处于桥接状态且被叫方(B)挂断时,主叫方(A)发生的情况。如果true拨号计划将停止处理,并且A分支将在B分支终止时终止。如果false(默认)则Bleg终止后,拨号计划将继续处理。

在park_after_bridge和transfer_after_bridge之后进行检查。

<action application="set" data="hangup_after_bridge=true"/>

2.3 transfer_after_bridge

 此变量可以控制呼叫挂断时发生的情况。可以将其与mod_fifo结合使用以控制“代理”,有可能将其发送回代理队列。在park_after_bridge之后和hangup_after_bridge之前检查。

在桥接完成并将leg转移至指定的拨号计划后,将清除变量。

<action application="set" data="transfer_after_bridge=1000"/>
<action application="set" data="transfer_after_bridge=1000:XML:default"/>

2.4 park_after_bridge

 如果设置为true,它将在桥接返回后驻留呼叫。在transfer_affter_bridge和hangup_after_bridge之前进行检查。

<action application="set" data="park_after_bridge=true"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>

2.5 exec_after_bridge_app

 桥接终止后,执行应用程序命令。与exec_after_bridge_arg一起使用。相反,要在建立桥接时执行,请使用execute_on_answer。

<action application="set" data="exec_after_bridge_app=transfer"/>
<action application="set" data="exec_after_bridge_arg=2102"/>

2.6 api_after_bridge

 桥接后执行API命令

<action application="set" data="api_after_bridge=luarun post-chime.lua"/>

2.7 bridge

 bridge的参数可以多写几个target,用逗号(,)或者竖线(|)分割开。从第二个target开始不可以使用花括号({})来设置参数,要用中括号([])。

bgapi originate user/8001 &bridge({continue_on_false=true,origination_caller_id_number=31580608}user/8003,[RECORD_STEREO=false,origination_caller_id_number=6898061]user/8002)
bgapi originate user/8001 &bridge([continue_on_false=true,origination_caller_id_number=31580608]user/8003|[RECORD_STEREO=false,origination_caller_id_number=6898061]user/8002)

 逗号分割的同时拨打,竖线分割的逐个拨打,拨打成功后后面的就不拨打了。

3 功能实现

3.1 xml配置

<condition field="${sip_from_user}" expression="8001|8002|8003|8004|8005|8006|8007|8008|8009|8010">
    <action application="set" data="continue_on_fail=true"/>
    <action application="set" data="effective_caller_id_number=90643"/>
    <action application="set" data="effective_caller_id_name=90643"/>
    <action application="bridge" data="sofia/external/sip:${destination_number}@1.2.6.4"/>
    <action application="set" data="effective_caller_id_number=90618"/>
    <action application="set" data="effective_caller_id_name=90618"/>
    <action application="bridge" data="sofia/external/sip:${destination_number}@8.2.6.5"/>
</condition>

或者

<condition field="${sip_from_user}" expression="8001|8002|8003|8004|8005|8006|8007|8008|8009|8010">
    <action application="bridge" data="[RECORD_STEREO=false,origination_caller_id_number=80608,sipname=waihu,cti_dial=1]sofia/external/sip:${destination_number}@8.2.6.5|[RECORD_STEREO=false,origination_caller_id_number=80618,sipname=gw2,cti_dial=1]sofia/external/sip:${destination_number}@1.5.2.6:6060"/>
</condition>

3.2 esl命令

bgapi originate user/8001 &bridge([RECORD_STEREO=false,origination_caller_id_number=80608,sipname=waihu,cti_dial=1]sofia/external/sip:xxxxxx@8.2.6.5|[RECORD_STEREO=false,origination_caller_id_number=80618,sipname=gw2,cti_dial=1]sofia/external/sip:xxxxxx@1.5.2.6:6060)

 

posted @ 2025-03-20 11:24  钟齐峰  阅读(53)  评论(0)    收藏  举报