禁止2行同时传入入站响铃

时间:2018-02-04 20:13:33

标签: asterisk sip pbx

我尝试将带有星号的ooma用于我的家庭设置,因此我将2条线路分配给通过FXO网关转发到星号的相同号码。出站呼叫似乎工作正常,但在入站时我有问题 - 两条线路同时振铃,所以在我的IP电话上,我看到来自同一号码的多个入站呼叫。让2个传入看起来像1个呼叫的最简单方法是什么?

我尝试使用DEVICE_STATE()功能:

[from-ooma1]
exten => s, 1, GotoIf($["${DEVICE_STATE(SIP/ooma2)}"="RINGING"]?hang)
        same => n, Goto(incoming,s,1)
        same => n(hang),Hangup()

[from-ooma2]
exten => s, 1, GotoIf($["${DEVICE_STATE(SIP/ooma1)}"="RINGING"]?hang)
        same => n, Goto(incoming,s,1)
        same => n(hang),Hangup()

所以如果另一条线已经振铃掉它就会在一条线上振铃。不幸的是,这不起作用,因为DEVICE_STATE只有2个状态NOT_INUSEINUSE(或者我不知道如何让它报告RINGING状态),我不能放弃" IN_USE&# 34;状态。

注意:我的主题可能会产生误导,澄清一下 - 我需要防止两条线同时响铃,但当第一线接听并仍在使用时,第二条线应该允许传入来电。

2 个答案:

答案 0 :(得分:1)

您可以使用函数GROUP

计算对任何单个实体的调用
[macro-stdvoip]
; ${ARG1} - full dial string
; Return ${DIALSTATUS} = CHANUNAVAIL if ${VOIPMAX} exceeded
exten => s,1,Set(GROUP()=trunkgroup1) ;Set Group
exten => s,2,GotoIf($[${GROUP_COUNT(trunkgroup1)} > ${VOIPMAX}]?103) ;Exceeded?
exten => s,3,Dial(${ARG1}) ;dial it
exten => s,103,SetVar(DIALSTATUS=CHANUNAVAIL) ;deny call

https://www.voip-info.org/wiki/view/Asterisk+func+group

答案 1 :(得分:0)

以防有人需要类似解决方案,这对我有用:

[from-ooma]
exten => 1,1,Set(CALLERID(number)=O:9${CALLERID(number)})
        same => n,Set(GROUP()=ooma)
        same => n,GotoIf($[${GROUP_COUNT(ooma)}>${GROUP_COUNT(ooma-answer)} + 1]?hang)
        same => n,Goto(incoming,s,1)
        same => n(hang),Hangup()

[macro-resetG]
exten => s,1,Set(GROUP()=${IF($[ "${ARG1:0:8}" = "SIP/ooma" ]?ooma-answer)})
        same => n,MacroExit

[incoming]
exten => s,1,Verbose(1,Caller ${CALLERID(all)} incoming call)
        same => n,Dial(SIP/1&SIP/2,20,TtM(resetG^${CHANNEL}))
        same => n,Hangup()

所以我使用另一个组来计算来自ooma的来电数量(使用宏条件是因为可能有其他来电)