IVR - Call forward on NOANSWER or on BUSY

I have an interactive voice server with different choices. here is the conf for the choice 2:

;##### CHOICE 2 #####

exten = 2,1,NoOp(pressed digit is 2, redirect to 2621 in {IVR_DESTINATION_CONTEXT} context) exten = 2,n,Goto({IVR_DESTINATION_CONTEXT},2621,1)

I dont find the syntax to redirect call if 2621 is busy or doesn’t answer in this particular case.


Your quote is garbled, because you didn’t mark it as preformatted.

Asterisk is a tool kit, so there is no syntax for this; you must program it in the dialplan.

That programming would have to go in extension 2 in the IVR context or extension 2621, in the IVR_DESTINATION_CONTEXT.

If you want canned ways of doing things, you should use a GUI and restrict yourself to the features provided by the GUI.


Thanks for your answer.

;##### CHOICE 2 #####

exten = 2,1,NoOp(pressed digit is 2, redirect to 2621 in {IVR_DESTINATION_CONTEXT} context) 
exten = 2,n,Goto(${IVR_DESTINATION_CONTEXT},2621,1)

is a part of xivo-extrafeatures.conf who is included in extension.conf
you say “you must program it in the dialplan”, thats my question:
first thing is to forward call to 2621 when the user press 2 but what have I to add after this to forward to another extension if 2621 doesnt answer?

Either use Queue rather than Dial or put code after Dial to handle the case where Dial falls through. With standard options, DIal will fall through to the next priority if it exits as the result of anything except the normal completion of a call, or a hangup by the caller. It sets the variables DIALSTATUS and HANGUPCAUSE to help your programming decide on how to act when that happens. This is true regardless of the use of IVRs.

Also, XIVO appears to be a third party GUI. This forum doesn’t support users of such GUIs as the GUIs tend to control the contents of the dialplan, and introduce very complex dialplans of their own. If this is the case, you need to get your support from the XIVO people.

There is a missing “$” in your second dialplan line. It is probably also missing from the first one, but only in a comment.

Sorry but I dont well understand all your answer , english is not my mother tongue. I use xivo but i can write dialplan manually , thats what i did for the IVR.IVR is working very well.
$ is missing you’re right but this is a mistake during the text copy.
is it technically possible to add a line after the goto line to forwqard the call on noanswer?
Could you please give me one exemple of how to do this?


No. Like in any programming language, GoTo unconditionally transfers control and the following line is not reachable.

This is pretty basic dialplan programming, once you understand that execution continues after a failed Dial. However your GUI may well get in the way, and, in any case you need to understand how your existing dialplan works.

The code the recovers from the failed Dial application call has to follow that call. In the simplest cases, it might just be another Dial application call.


I added this :

exten => 2621,1,Dial(SIP/Oxe/2621,10)
same => n,GotoIf($["${DIALSTATUS}" = “BUSY”]?busy:unavail)
same => n(unavail),Dial(SIP/Oxe/2607,10)
same => n,Hangup()
same => n(busy),Dial(SIP/Oxe/2607,10)
same => n,Hangup()

include => serveur-vocal-interactif

When I call 2621 who is busy, call is well forwarded to 2607 but that doesn’t work through the IVR with this log:

-- SIP/Oxe-00000016 is busy [Nov 30 14:21:14] == Everyone is busy/congested at this time (1:1/0/0) [Nov 30 14:21:14] -- Executing [dial@outcall:8] Goto("SIP/Oxe-00000015", "BUSY,1") in new stack [Nov 30 14:21:14] -- Goto (outcall,BUSY,1) [Nov 30 14:21:14] -- Executing [BUSY@outcall:1] Playback("SIP/Oxe-00000015", "busy-call") in new stack [Nov 30 14:21:14] -- <SIP/Oxe-00000015> Playing 'busy-call.slin' (language 'fr_FR')
What did I miss please?

NB: 2621 is joined through an internal trunk SIP on an Alcatel Oxe, but it seems to be asterisk (xivo) who answer me.


You are missing that you have added code in a context that is not being used for the call.

As I said, Asterisk is a tool kit, and if you try to adapt third party code that uses that tool kit, you need to understand how it is using it. We don’t know, and finding out is not something you can expect as free consultancy.


I added the code in the right context and its working now. I dont know why you focus on the fact it is a third party app, its free and based on asterisk so you could have help me a little more :wink:
Anyway, its a good way to learn by myself but that would have been easier with more help.