我尝试将带有星号的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_INUSE
和INUSE
(或者我不知道如何让它报告RINGING状态),我不能放弃" IN_USE&# 34;状态。
注意:我的主题可能会产生误导,澄清一下 - 我需要防止两条线同时响铃,但当第一线接听并仍在使用时,第二条线应该允许传入来电。
答案 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
答案 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
的来电数量(使用宏条件是因为可能有其他来电)