I am trying to implement a Centralized Call Waiting System. I have red
some document about asterisk group features to manage group and
category of a sip channel.
I have done a lot of test about it but always it doesn't work
correctly if I transfer the call.
This is the macro code I use for inbound calls.
[macro-test]
; ${ARG1} - technology something like SIP
; ${ARG2} - resource. snom300-for-vasya
; ${ARG3} - dial timeout
; ${ARG4} - dial options
; ${ARG5} - dial url
exten => s,1,Goto(s-set-variables,1)
exten => s,n(set_var_ret),Set(GROUP(${LOCAL_PARTY})=OUTBOUND_GROUP)
exten => s,n,GotoIf($[${GROUP_COUNT(OUTBOUND_GROUP@${LOCAL_PARTY})} >
1]?play_back_busy)
exten => s,n,GotoIf($[${LEN(${CALLERIDNUM})} != 4]?skip_down)
exten => s,n,Set(GROUP(${CALLERIDNUM})=OUTBOUND_GROUP)
exten => s,n(skip_down),Noop("Test")
exten => s,n,NoOp(${OUTBOUND_GROUP})
exten => s,n,Dial(${TECHNOLOGY}/${LOCAL_PARTY}|${DIAL_TIMEOUT})
exten => s,n(macro_out),MacroExit()
exten => s,n(play_back_busy),GotoIf($[zoo${BUSYOPT} = zooNoBusy]?macro_out)
exten => s,n,Busy
; // -------- set variables
exten => s-set-variables,1,Set(TECHNOLOGY=${ARG1})
exten => s-set-variables,n,Set(LOCAL_PARTY=${ARG2})
exten => s-set-variables,n,Set(DIAL_TIMEOUT=${ARG3})
exten => s-set-variables,n,Goto(s,set_var_ret)
; // -------- check dnd
I have only SIP hardware Phone with g729 codec.
When I call an internal from another one this is the output of "group
show channels" in console:
Channel Group Category
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3673
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3671
When I am tranfering the call from the destination to another
extension this is the output of the same command:
Channel Group Category
SIP/3671-b73501c0 OUTBOUND_GROUP 3671
SIP/3671-b73501c0 OUTBOUND_GROUP 3700
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3673
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3671
After the transfer the output is the follow but the call now is
between 3673 and 3700 extensions.
Channel Group Category
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3673
SIP/3673-b73ef7c0 OUTBOUND_GROUP 3671
The extension 3700 seems free but it is busy.
The extension 3671 seems busy but it is free.
How can I implement a really working centralized call waiting feature?
Thanx a lot.
Lorenzo