[Freeswitch-dev] Loading an IVR menu on the fly through an URL
RaviRaj Mulasa
rml at tollfreeforwarding.com
Fri Nov 18 12:59:55 MSK 2011
Hi FreeSWITCH Enthusiastics/Gurus
Requirement
1. Customers can build a custom IVR using a UI.
2. Back end code persists the IVR details in a DB.
3. A URL will be exposed and will return the a XML file in the format as follows
<menu name="CUSTOMER_ID_ivr"
greet-long="phrase:demo_ivr_main_menu"
greet-short="phrase:demo_ivr_main_menu_short"
invalid-sound="/mnt/callControlStorage/en/invalidSelection.wav"
exit-sound="/mnt/callControlStorage/en/tollFreeForwardingDotCom.wav"
tollFreeForwardingDotCom
timeout ="10000"
inter-digit-timeout="2000"
max-failures="3"
digit-len="4">
<entry action="menu-exec-app" digits="1" param="bridge sofia/$${domain}/888 at conference.freeswitch.org"/<mailto:sofia/$$%7bdomain%7d/888 at conference.freeswitch.org%22/>>
<entry action="menu-exec-app" digits="2" param="transfer 9996 XML default"/> <!-- FS echo -->
<entry action="menu-exec-app" digits="3" param="transfer 9999 XML default"/> <!-- MOH -->
<entry action="menu-sub" digits="4" param="3107767546_ivr_submenu"/> <!-- demo sub menu -->
<entry action="menu-exec-app" digits="5" param="transfer 1234*256 enum"/> <!-- Screaming monkeys -->
<entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML default"/> <!-- dial ext & x-fer -->
<entry action="menu-top" digits="9"/> <!-- Repeat this menu -->
</menu>
4. Load and start executing the IVR 'CUSTOMER_ID_ivr' from events socket on the fly via HTTP URI.
Gave it a shot with current setup
ivr.conf.xml
<configuration name="ivr.conf" description="IVR menus">
<menus>
<X-PRE-PROCESS cmd="include" data="/mnt/<<Folder Name for the NETWORK DIRVE mapped>>/ivr_menus/*.xml"/>
</menus>
</configuration>
The ivr.conf.xml is auto loaded at startup of FreeSWITCH.
To load any new IVR menus , we need to call API command reloadxml which reloads the whole XML configs in autload_configs folder.
The reloadxml might take long time based on the number of XML files present in the folder "/mnt/<<Folder Name for the NETWORK DIRVE mapped>>/ivr_menus"
Good /Hope to have for the IVR menu
1. Load /Unload IVR menus on the fly using API command(s)
freeswitch at localhost> loadivr << URL to fetch the XML describing the IVR menu(s)>>
freeswitch at localhost> unloadivr <<IVR menu name>>
2. From the event socket
SendMsg <uuid>
call-command: execute
execute-app-name: ivr
execute-app-arg: <<MAIN_MENU to start execution>>SPACE <<URL to fetch the XML describing the IVR menu(s)>>
Educated/Wild Guess
We might be able to play IVR menu on the fly by combining the mod_xml_curl and dialplan tool - ivr.
Please let us know how can we achieve the functionality , we are more interested in the second approach(Event Socket) under Good /Hope to have for the IVR menu.
Thanks
RaviRaj.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20111118/d27335c0/attachment-0001.html
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-dev
mailing list