[asterisk-users] Prevent Dial if any extension is busy

Magnus Benngård magnus.b at inputinterior.se
Sun Nov 22 09:13:36 CST 2009



On Sun, 22 Nov 2009 15:38:00 +0100, Leif Neland  wrote: Magnus Benngård
skrev:   Hi!

 Part of extensions.conf:

 exten => 985,1,Dial(SIP/0317998985&H323/00702221448 at Avaya,20)
 exten => 985,2,Goto(985-${DIALSTATUS},1)
 exten => 985-BUSY,1,VoiceMail(0317998985 at inputinterior.se,b [1])
 exten => 985-BUSY,2,PlayBack(vm-goodbye)
 exten => 985-BUSY,3,HangUp()
 exten => 985-NOANSWER,1,VoiceMail(0317998985 at inputinterior.se,u [2])
 exten => 985-NOANSWER,2,PlayBack(vm-goodbye)
 exten => 985-NOANSWER,3,HangUp()

 0317998985 is a direct connected SIP phone
 0702221448 is a celluar phone.

 When dialing 985 both phones rings, perfect
 If none answer within 20 seconds, VoiceMail(0317998985 at inputinterior.se,u
[3]), perfect

 But my problem comes when I speak on 0317998985 and someone calls on 985,
the call
 get to my celluar phone and ofc the other way around.

 Is there a way to check if any extension is busy and in that case jump to
VoiceMail(0317998985 at inputinterior.se,b [4])?   
 If both
phones were directly connected sip, it could be done.
 The problem is that you can't determine if the cellular is busy before
you call it.

 If the cell was only called via asterisk, you could set a flag, when
asterisk called extension 985, and clear it, when hanging up, but I guess
the phone is used for call out via regular cell service, and also called
directly on its own number.

 You don't own the cell-company, and can setup an API to get the status of
the cell, right? I didn't think so :-)

No i dont own the cell-company but they route the cell-call to my main
Avaya pbx and the Avaya route it back (with a new b-number) so I have
pretty much control over the cell-call.
Just have to route it to my Asterisk and set the flag there, will do some
reading and figure out how.

 You could do this:
 check if sip is busy, using ChanIsAvail

I am running Asterisk SVN-branch-1.6.2-r230384 so I thougt i can do
something like:
(For checking if I am talking on the SIP phone)

exten =>
985,1,GotoIf($["${DEVICE_STATE(SIP/0317998985)}"="BUSY"]?11)
exten => 985,2,Dial(SIP/0317998985&H323/00702221448 at Avaya,20)
exten => 985,3,Goto(985-${DIALSTATUS},21)
exten => 985,4,HangUp()
exten => 985-BUSY,11,VoiceMail(0317998985 at inputinterior.se,b)
exten => 985-BUSY,12,PlayBack(vm-goodbye)
exten => 985-BUSY,13,HangUp()
exten => 985-NOANSWER,21,VoiceMail(0317998985 at inputinterior.se,u)
exten => 985-NOANSWER,22,PlayBack(vm-goodbye)
exten => 985-NOANSWER,23,HangUp()

But there is something wrong with the first line, tried "INUSE" aswell.
When I place a call from 0317998985 and some1 call 985, the call goes to
the cell phone. :(
Can any1 se what I am doing wrong?

 If so, go to voicemail.
 Else, dial cell, timeout 20 sec
 if busy go to voicemail
 else dial sip, timeout 20 sec
 if not answered. go to voicemail.

 But this will give 20 seconds delay before sip rings, and 40 seconds
timeout for the caller before voicemail.

 The other option is to modify the source, and add an option to
the
dial-command, to exit if any extension dialled is busy.
 After all, this is open source :-)

 Leif

 

Links:
------
[1] mailto:0317998985 at inputinterior.se,b
[2] mailto:0317998985 at inputinterior.se,u
[3] mailto:0317998985 at inputinterior.se,u
[4] mailto:0317998985 at inputinterior.se,b
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20091122/c1040b8a/attachment.htm 


More information about the asterisk-users mailing list