双线路呼叫(主备)
双线路呼叫(主备)
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)
浙公网安备 33010602011771号