[Freeswitch-users] IVR dialplan inheritance

Ben Hood 0x6e6562 at gmail.com
Thu May 14 13:07:29 MSD 2015


Hi all,

I was wondering under what circumstances an IVR menu would loop back
on itself when a transfer is triggered by user input.

I have the following menu:

<document type="freeswitch/xml">
<section name="configuration">
<configuration name="ivr.conf">
<menus>
<include>
<menu name="1"
greet-long="http_cache://http://$${user}:$${password}@$${url}/audio/76568832.wav"
invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
exit-sound="voicemail/vm-goodbye.wav"
confirm-macro=""
confirm-key=""
confirm-attempts="3"
timeout="10000"
inter-digit-timeout="2000"
max-failures="3"
max-timeouts="3"
digit-len="1">
 <entry action="menu-exec-app" digits="3" param="transfer +37950280022
XML public"/>
</menu>
</include>
</menus>
</configuration>
</section>
</document>

When the user dials 3, the following output in the log occurs:

2015-05-14 10:43:00.861297 [NOTICE] switch_ivr.c:1861 Transfer
sofia/external/+37950290088 at fs to XML[+37950280022 at public]
...
2015-05-14 10:43:00.861297 [INFO] mod_dialplan_xml.c:635 Processing
+37950290088 <+37950290088>->+37950280022 in context public

So at this point in time, I would expect the dialplan that matches
+37950280022 to get executed.

However, what appears to happen is that the dialplan that originally
invoked the ivr application is executed again:

Dialplan: sofia/external/+37950290088 at fs parsing [public->ivr_route]
continue=false
Dialplan: sofia/external/+37950290088 at fs Absolute Condition [ivr_route]
Dialplan: sofia/external/+37950290088 at fs Action answer()
Dialplan: sofia/external/+37950290088 at fs Action sleep(2000)
Dialplan: sofia/external/+37950290088 at fs Action ivr(1)

This creates a loop.

This is the original dialplan that invokes the ivr menu:

<document type="freeswitch/xml">
<section name="dialplan">
<context name="public">
<extension name="ivr_route">
<condition>
<action application="answer"/>
<action application="sleep" data="2000"/>
<action application="ivr" data="1"/>
</condition>
</extension>
</context>
</section>
</document>

Is there potentially something in my menu definition that is causing
the original dialplan to executed, as opposed to the dialplan
specified by the transfer application?

Many thanks in advance,

Ben



Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list