提交 d5506f4c authored 作者: Buklov Boris's avatar Buklov Boris

Merge branch 'master' of ssh://git.freeswitch.org:222/freeswitch

<?xml version="1.0" encoding="Windows-1252"?>
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="demo_ivr_count">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
</match>
</input>
</macro>
<macro name="demo_ivr_main_menu" pause="100"> <!-- 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="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
<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 -->
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
<action function="play-file" data="silence_stream://1500"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<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"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<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"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<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"/>
<!-- Menu option 4: Register for ClueCon -->
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<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"/>
<!-- Menu option 6: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/6.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<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="play-file" data="silence_stream://2000"/>
</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" pause="100">
<input pattern="(.*)">
<match>
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="silence_stream://1000"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<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"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<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"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<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"/>
<!-- Menu option 4: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<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"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<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"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<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="play-file" data="silence_stream://2000"/>
</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="play-file" data="ivr/ivr-sample_submenu.wav"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<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"/>
</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="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="msgcount">
<input pattern="(.*)">
<match>
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
<!-- or -->
<!--<action function="speak-text" data="you have $1 messages"/>-->
</match>
</input>
</macro>
<macro name="saydate">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
</match>
</input>
</macro>
<macro name="timespec">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
</match>
</input>
</macro>
<macro name="ip-addr">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="iterated" type="ip_address"/>
<action function="say" data="$1" method="pronounced" type="ip_address"/>
</match>
</input>
</macro>
<macro name="spell">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="spell-phonetic">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
</match>
</input>
</macro>
<macro name="tts-timeleft">
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
<!-- If the function "break" is encountered all parsing will cease -->
<input pattern="(\d+):(\d+)">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
<action function="break"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
<input pattern="(\d+) min (\d+) sec">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="directory_intro">
<input pattern="^(last_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
</match>
</input>
<input pattern="^(first_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
</match>
</input>
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_min_search_digits">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count">
<input pattern="^0$" break_on_match="true">
<match>
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
</match>
</input>
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-result_match.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count_too_large">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-too_many_result.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_last">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-no_more_results.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_item">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-result_number.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
</match>
</input>
</macro>
<macro name="directory_result_at">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-at_extension.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_menu">
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
<match>
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
<action function="play-file" data="directory/dir-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_next.wav"/>
<action function="play-file" data="directory/dir-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_prev.wav"/>
<action function="play-file" data="directory/dir-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-start_new_search.wav"/>
<action function="play-file" data="directory/dir-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_say_name">
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->
<include>
<language name="he" sound-path="$${sounds_dir}/he/daniel" tts-engine="cepstral" tts-voice="daniel">
<X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/>
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/>
</language>
</include>
差异被折叠。
......@@ -4928,7 +4928,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
match = sofia_glue_negotiate_sdp(session, r_sdp);
}
if (match) {
if (!match) {
if (switch_channel_get_state(channel) != CS_NEW) {
nua_respond(tech_pvt->nh, SIP_488_NOT_ACCEPTABLE, TAG_END());
}
} else {
nua_handle_t *bnh;
sip_replaces_t *replaces;
su_home_t *home = NULL;
......@@ -4936,6 +4940,8 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
sofia_set_flag_locked(tech_pvt, TFLAG_READY);
if (switch_channel_get_state(channel) == CS_NEW) {
switch_channel_set_state(channel, CS_INIT);
} else {
nua_respond(tech_pvt->nh, SIP_200_OK, TAG_END());
}
sofia_set_flag(tech_pvt, TFLAG_SDP);
if (replaces_str) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论