<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi FreeSWITCH Enthusiastics/Gurus<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><u>Requirement &nbsp;<o:p></o:p></u></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>1. Customers can &nbsp;build&nbsp; a custom IVR using a UI.<o:p></o:p></p><p class=MsoNormal>2. Back end code persists the IVR details in a DB.<o:p></o:p></p><p class=MsoNormal>3. &nbsp;A URL &nbsp;will be exposed &nbsp;and will return the a XML file in the format as follows<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&lt;menu name=&quot;CUSTOMER_ID_ivr&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; greet-long=&quot;phrase:demo_ivr_main_menu&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greet-short=&quot;phrase:demo_ivr_main_menu_short&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invalid-sound=&quot;/mnt/callControlStorage/en/invalidSelection.wav&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit-sound=&quot;/mnt/callControlStorage/en/tollFreeForwardingDotCom.wav&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; tollFreeForwardingDotCom<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeout =&quot;10000&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; inter-digit-timeout=&quot;2000&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; max-failures=&quot;3&quot;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; digit-len=&quot;4&quot;&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-exec-app&quot; digits=&quot;1&quot; param=&quot;bridge <a href="mailto:sofia/$$%7bdomain%7d/888@conference.freeswitch.org%22/">sofia/$${domain}/888@conference.freeswitch.org&quot;/</a>&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-exec-app&quot; digits=&quot;2&quot; param=&quot;transfer 9996 XML default&quot;/&gt;&nbsp;&nbsp;&nbsp; &lt;!-- FS echo --&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-exec-app&quot; digits=&quot;3&quot; param=&quot;transfer 9999 XML default&quot;/&gt;&nbsp;&nbsp;&nbsp; &lt;!-- MOH --&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-sub&quot; digits=&quot;4&quot; param=&quot;3107767546_ivr_submenu&quot;/&gt;&nbsp; &lt;!-- demo sub menu --&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-exec-app&quot; digits=&quot;5&quot; param=&quot;transfer 1234*256 enum&quot;/&gt;&nbsp;&nbsp;&nbsp; &lt;!-- Screaming monkeys --&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-exec-app&quot; digits=&quot;/^(10[01][0-9])$/&quot; param=&quot;transfer $1 XML default&quot;/&gt; &lt;!-- dial ext &amp; x-fer --&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry action=&quot;menu-top&quot; digits=&quot;9&quot;/&gt;&nbsp;&nbsp;&nbsp; &lt;!-- Repeat this menu --&gt;<o:p></o:p></p><p class=MsoNormal>&lt;/menu&gt;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>4. Load and start executing the IVR &nbsp;&#8216;CUSTOMER_ID_ivr&#8217; &nbsp;from events socket on the fly via HTTP URI.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><u>Gave it a shot with current setup<o:p></o:p></u></p><p class=MsoNormal><u><o:p><span style='text-decoration:none'>&nbsp;</span></o:p></u></p><p class=MsoNormal>ivr.conf.xml<o:p></o:p></p><p class=MsoNormal><u><o:p><span style='text-decoration:none'>&nbsp;</span></o:p></u></p><p class=MsoNormal>&lt;configuration name=&quot;ivr.conf&quot; description=&quot;IVR menus&quot;&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp; &lt;menus&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;X-PRE-PROCESS cmd=&quot;include&quot; data=&quot;/mnt/&lt;&lt;Folder Name for the NETWORK DIRVE mapped&gt;&gt;/ivr_menus/*.xml&quot;/&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp; &lt;/menus&gt;<o:p></o:p></p><p class=MsoNormal>&lt;/configuration&gt;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>The ivr.conf.xml is auto loaded at startup of FreeSWITCH.<o:p></o:p></p><p class=MsoNormal>To load any new IVR menus , we need to call API command reloadxml &nbsp;which reloads the whole XML configs in autload_configs folder.<o:p></o:p></p><p class=MsoNormal>The reloadxml might take long time based on the number of XML files present in the folder &quot;/mnt/&lt;&lt;Folder Name for the NETWORK DIRVE mapped&gt;&gt;/ivr_menus&#8221;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><u>Good /Hope to have for the IVR menu</u><o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>1. Load /Unload &nbsp;IVR menus on the fly &nbsp;using &nbsp;API command(s)<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>freeswitch@localhost&gt; loadivr &lt;&lt; URL to fetch the &nbsp;XML describing the IVR menu(s)&gt;&gt;<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>freeswitch@localhost&gt; unloadivr &nbsp;&lt;&lt;IVR menu name&gt;&gt;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></p><p class=MsoNormal>2. &nbsp;From the event socket<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>SendMsg &lt;uuid&gt;<o:p></o:p></p><p class=MsoNormal>call-command: execute<o:p></o:p></p><p class=MsoNormal>execute-app-name: ivr<o:p></o:p></p><p class=MsoNormal>execute-app-arg: &lt;&lt;MAIN_MENU to start execution&gt;&gt;SPACE &lt;&lt;URL to fetch the&nbsp; XML describing the IVR menu(s)&gt;&gt;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><u>Educated/Wild Guess<o:p></o:p></u></p><p class=MsoNormal><u><o:p><span style='text-decoration:none'>&nbsp;</span></o:p></u></p><p class=MsoNormal>We might be able to play IVR menu on the fly &nbsp;by combining the mod_xml_curl and &nbsp;dialplan tool &nbsp;- ivr.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><u><o:p><span style='text-decoration:none'>&nbsp;</span></o:p></u></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Please let us know how can we achieve the functionality , we are more interested in the second &nbsp;approach(Event Socket) &nbsp;under <u>Good /Hope to have for the IVR menu.<o:p></o:p></u></p><p class=MsoNormal><u><o:p><span style='text-decoration:none'>&nbsp;</span></o:p></u></p><p class=MsoNormal>Thanks<o:p></o:p></p><p class=MsoNormal>RaviRaj.<o:p></o:p></p></div></body></html>