add ivr demo thanks mcollins.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8019 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Brian West 2008-04-04 02:27:46 +00:00
parent e9e9acd16c
commit 05a73345b9
3 changed files with 203 additions and 60 deletions

View File

@ -1,53 +1,47 @@
<configuration name="ivr.conf" description="IVR menus">
<menus>
<menu name="demo"
greet-long="soundfiles/ivr/demo/greet-long.wav"
greet-short="soundfiles/ivr/demo/greet-short.wav"
invalid-sound="soundfiles/ivr/invalid.wav"
exit-sound="soundfiles/ivr/exit.wav" timeout ="15"
max-failures="3">
<entry action="menu-exit" digits="*"/>
<entry action="menu-play-sound" digits="1" params="soundfiles/features.wav"/>
<entry action="menu-sub" digits="2" param="demo2"/>
<entry action="menu-exec-app" digits="3" param="bridge sofia/$${domain}/888@conference.freeswtich.org"/>
<entry action="menu-call-transfer" digits="4" param="888"/>
<entry action="menu-sub" digits="8" param="menu8"/>
</menu>
<menu name="demo2"
greet-long="soundfiles/ivr/demo2/greet-long.wav"
greet-short="soundfiles/ivr/demo2/greet-short.wav"
invalid-sound="soundfiles/ivr/invalid.wav"
exit-sound="soundfiles/ivr/exit.wav"
timeout ="15"
max-failures="3">
<entry action="menu-back" digits="#"/>
<entry action="menu-top" digits="*"/>
</menu>
<menu name="demo3"
greet-long="say:Press 1 to join the conference, Press 2 to join the other conference"
greet-short="say:Press 1 to join the conference, Press 2 to join the other conference"
invalid-sound="say:invalid extension"
exit-sound="say:exit sound" timeout ="15"
max-failures="3"
tts-voice="callie" tts-engine="cepstral">
<entry action="menu-exit" digits="*"/>
<!-- <entry action="menu-say-text" digits="1" param="You pressed 1"/> -->
<entry action="menu-call-transfer" digits="1" param="1000"/>
<entry action="menu-call-transfer" digits="2" param="1001"/>
</menu>
<menu name="menu8"
greet-long="/soundfiles/ivr/menu8/greet-long.wav"
greet-short="/soundfiles/ivr/menu8/greet-short.wav"
invalid-sound="/soundfiles/ivr/menu8/invalid.wav"
exit-sound="/soundfiles/ivr/menu8/exit.wav"
timeout ="15"
max-failures="3">
<entry action="menu-back" digits="#"/>
<entry action="menu-play-sound" digits="4" param="soundfiles/4.wav"/>
<entry action="menu-top" digits="*"/>
</menu>
</menus>
</configuration>
<configuration name="ivr.conf" description="IVR menus">
<menus>
<!-- demo IVR setup -->
<!-- demo IVR, Main Menu -->
<menu name="demo_ivr"
greet-long="phrase:demo_ivr_main_menu"
greet-short="phrase:demo_ivr_main_menu_short""
invalid-sound="voicemail/vm-hello.wav"
exit-sound="voicemail/vm-goodbye.wav"
timeout ="15"
max-failures="3">
<entry action="menu-exec-app" digits="1" param="bridge sofia/$${domain}/888@conference.freeswtich.org"/>
<entry action="menu-call-transfer" digits="2" param="9996"/> <!-- FS echo -->
<entry action="menu-call-transfer" digits="3" param="9999"/> <!-- MOH -->
<entry action="menu-sub" digits="4" param="demo_ivr_submenu"/> <!-- demo sub menu -->
<entry action="menu-call-transfer" digits="5" param="1234*256"/> <!-- Screaming monkeys -->
<entry action="menu-top" digits="9" param="demo_ivr"/> <!-- Repeat this menu -->
</menu>
<!-- Demo IVR, Sub Menu -->
<menu name="demo_ivr_submenu"
greet-long="phrase:demo_ivr_sub_menu"
greet-short="phrase:demo_ivr_sub_menu_short"
invalid-sound="voicemail/vm-hello.wav"
exit-sound="voicemail/vm-goodbye.wav" timeout="15"
max-failures="3">
<entry action="menu-top" digits="*"/>
</menu>
</menus>
</configuration>
<!-- TTS sample; non-functional but it demonstrates say: and TTS -->
<!--
<menu name="demo3"
greet-long="say:Press 1 to join the conference, Press 2 to join the other conference"
greet-short="say:Press 1 to join the conference, Press 2 to join the other conference"
invalid-sound="say:invalid extension"
exit-sound="say:exit sound" timeout ="15"
max-failures="3"
tts-voice="callie" tts-engine="cepstral">
<entry action="menu-exit" digits="*"/>
<entry action="menu-say-text" digits="1" param="You pressed 1"/>
<entry action="menu-call-transfer" digits="2" param="1000"/>
<entry action="menu-call-transfer" digits="3" param="1001"/>
</menu>
-->

View File

@ -0,0 +1,149 @@
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="demo_ivr_main_menu"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
<input pattern="(.*)">
<match>
<!-- string together several existing sound files to create one long greeting -->
<action function="execute" data="answer"/>
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
<action function="execute" data="sleep(250)"/>
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 4: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/4.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="execute" data="sleep(6000)"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_main_menu_short">
<input pattern="(.*)">
<match>
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 4: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/4.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="execute" data="sleep(6000)"/>
</match>
</input>
</macro>
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
<macro name="demo_ivr_sub_menu">
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
<action function="execute" data="sleep(250)"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
<action function="execute" data="sleep(250)"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_sub_menu_short">
<input pattern="(.*)">
<match>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="execute" data="sleep(250)"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
<action function="execute" data="sleep(250)"/>
</match>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->

View File

@ -1,7 +1,7 @@
<include>
<language name="en" sound-path="$${base_dir}/sounds/en/us/callie" tts-engine="cepstral" tts-voice="callie">
<X-PRE-PROCESS cmd="include" data="demo/demo.xml"/>
<!--voicemail_en_tts is purely implemented with tts, we need a files based implementation too -->
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/>
</language>
</include>
<include>
<language name="en" sound-path="$${base_dir}/sounds/en/us/callie" tts-engine="cepstral" tts-voice="callie">
<X-PRE-PROCESS cmd="include" data="demo/demo*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
<!--voicemail_en_tts is purely implemented with tts, we need a files based implementation too -->
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/>
</language>
</include>