[asterisk-users] Channel variable settings

Administrator TOOTAI admin at tootai.net
Sat Apr 26 11:02:34 CDT 2008


Hi all,

we are running Asterisk SVN-branch-1.4-r114299 and face following 
problem: we have a main extension (102) and other extensions (104 and 107)

When extension 104 is calling extension 107 and 107 is on the phone, the 
caller is parked for 5 seconds (Park-And-Announce) and the going back to 
the called extension (busyNUMBER). After 6 loops in busy state, the call 
has to be forwarded to main extension which is 102. Everything is 
working perfectly with one call is this loop. If a second call enter 
this loop, the busyNUMBER is replaced by the last asked extension, even 
for calls already in the loop!

I was expecting that one call -here SIP channel- is one channel so 
variables and their values are independent of the concurrent calls in 
this channel. the busyNUMBER is _not_defined as a global variable and is 
unique in the dialplan.

Is this behaviour normal or related to ParkAndAnnounce? Another solution 
would be to create an unique variable like (tested but it's not working):

exten => _X.,1,Set(busyNUMBER=${UNIQUEID})
exten => _X.,n,Set($[${busyNUMBER}]=${EXTEN})

Is something like this existing?

Thanks for your feedback. Relevant part of the dialplan is:

[dial-local]

exten => _X.,1,Set(GLOBAL(__DIALEDNUMBER)=${EXTEN})
exten => _X.,n,Set(busyNUMBER=${EXTEN})
exten => _X.,n,Set(VoiceMail=u)
exten => _X.,n,Set(StatusPrio=1)
exten => _X.,n,macro(rec,)
exten => _X.,n,GotoIf($["${DIALEDNUMBER}" = 
"${CALLERID(number)}"]?extendedVM)
exten => 
_X.,n(BackFromBusy),Dial(SIP/${DIALEDNUMBER},${SIPTIMERING},${DIALOPT})
exten => _X.,n,Goto(onDialStatus-local,s-${DIALSTATUS},${StatusPrio})

exten => _X.,20(extendedVM),NoOp(User ${CALLERID(number)} enter extended 
voicemail)
exten => _X.,n,StopMonitor
exten => _X.,n,VoiceMailMain()
exten => _X.,n,Hangup

exten => _70[1-9],1,ParkedCall(${EXTEN})

[onDialStatus-local]
exten => s-BUSY,1,Set(VoiceMail=b)
exten => s-BUSY,n,Set(CHANNEL(LANGUAGE)=fr)
exten => s-BUSY,n,Set(countParkedLoop=0)
exten => s-BUSY,n,Background(busy-pls-hold)
exten => 
s-BUSY,n(AfterAnnounce),Set(countParkedLoop=$[${countParkedLoop}+1])
exten => s-BUSY,n,GotoIf($["${countParkedLoop}" < "7"]?:ReturnToMainLoop)
exten => s-BUSY,n,ParkAndAnnounce(pbx-transfer:PARKED|5|SIP/${busyNUMBER}})
exten => s-BUSY,n,Set(StatusPrio=AfterAnnounce)
exten => s-BUSY,n,Goto(dial-local,${busyNUMBER},BackFromBusy)
exten => s-BUSY,n(ReturnToMainLoop),Goto(dial-local,102,1)


-- 
Daniel



More information about the asterisk-users mailing list