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

You have an absolute condition, so this will match every call that reaches that part of the dialplan context. That includes after the transfer.

You need to either 1) change your condition so it only matches the calls you want to go to the IVR menu, 2) transfer to a different context from the menu or 3) handle the +37950290088 call before the ivr_route extension so it doesn't reach that one.

On 14 May 2015 at 10:07, Ben Hood <0x6e6562@gmail.com> wrote:
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@fs to XML[+37950280022@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@fs parsing [public->ivr_route]
continue=false
Dialplan: sofia/external/+37950290088@fs Absolute Condition [ivr_route]
Dialplan: sofia/external/+37950290088@fs Action answer()
Dialplan: sofia/external/+37950290088@fs Action sleep(2000)
Dialplan: sofia/external/+37950290088@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

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org