From: Richard Mudgett Date: Tue, 8 Oct 2013 20:14:14 +0000 (+0000) Subject: app_confbridge: Can now set the language used for announcements to the conference. X-Git-Tag: 11.7.0-rc1~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae78f04e4f6d8813a0d71ad981cbccf16792cc4e;p=thirdparty%2Fasterisk.git app_confbridge: Can now set the language used for announcements to the conference. ConfBridge now has the ability to set the language of announcements to the conference. The language can be set on a bridge profile in confbridge.conf or by the dialplan function CONFBRIDGE(bridge,language)=en. (closes issue ASTERISK-19983) Reported by: Jonathan White Patches: M19983_rev2.diff (license #5138) patch uploaded by junky (modified) Tested by: rmudgett git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@400741 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/UPGRADE.txt b/UPGRADE.txt index 9073b32715..37859df8ed 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -19,6 +19,13 @@ === UPGRADE-10.txt -- Upgrade info for 1.8 to 10 === =========================================================== + +From 11.6 to 11.7: +ConfBridge + - ConfBridge now has the ability to set the language of announcements to the + conference. The language can be set on a bridge profile in confbridge.conf + or by the dialplan function CONFBRIDGE(bridge,language)=en. + From 11.5 to 11.6: * res_agi will now properly indicate if there was an error in streaming an audio file. The result code will be -1 and the result returned from the diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index 57de6d46cf..6c72dad74e 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -1342,6 +1342,9 @@ static int alloc_playback_chan(struct conference_bridge *conference_bridge) ast_channel_internal_bridge_set(conference_bridge->playback_chan, conference_bridge->bridge); + /* To make sure playback_chan has the same language of that profile */ + ast_channel_language_set(conference_bridge->playback_chan, conference_bridge->b_profile.language); + if (ast_call(conference_bridge->playback_chan, "", 0)) { ast_hangup(conference_bridge->playback_chan); conference_bridge->playback_chan = NULL; diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c index e64c856054..e6ccddd4ab 100644 --- a/apps/confbridge/conf_config_parser.c +++ b/apps/confbridge/conf_config_parser.c @@ -852,6 +852,7 @@ static char *handle_cli_confbridge_show_bridge_profile(struct ast_cli_entry *e, ast_cli(a->fd,"--------------------------------------------\n"); ast_cli(a->fd,"Name: %s\n", b_profile.name); + ast_cli(a->fd,"Language: %s\n", b_profile.language); if (b_profile.internal_sample_rate) { snprintf(tmp, sizeof(tmp), "%d", b_profile.internal_sample_rate); @@ -1364,6 +1365,7 @@ int conf_load_config(void) aco_option_register_custom(&cfg_info, "video_mode", ACO_EXACT, bridge_types, NULL, video_mode_handler, 0); aco_option_register(&cfg_info, "max_members", ACO_EXACT, bridge_types, "0", OPT_UINT_T, 0, FLDSET(struct bridge_profile, max_members)); aco_option_register(&cfg_info, "record_file", ACO_EXACT, bridge_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct bridge_profile, rec_file)); + aco_option_register(&cfg_info, "language", ACO_EXACT, bridge_types, "en", OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct bridge_profile, language)); aco_option_register_custom(&cfg_info, "^sound_", ACO_REGEX, bridge_types, NULL, sound_option_handler, 0); /* This option should only be used with the CONFBRIDGE dialplan function */ aco_option_register_custom(&cfg_info, "template", ACO_EXACT, bridge_types, NULL, bridge_template_handler, 0); diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h index 0de2c50c9d..f9fc93d900 100644 --- a/apps/confbridge/include/confbridge.h +++ b/apps/confbridge/include/confbridge.h @@ -191,6 +191,7 @@ struct bridge_profile_sounds { struct bridge_profile { char name[64]; + char language[MAX_LANGUAGE]; /*!< Language used for playback_chan */ char rec_file[PATH_MAX]; unsigned int flags; unsigned int max_members; /*!< The maximum number of participants allowed in the conference */ diff --git a/configs/confbridge.conf.sample b/configs/confbridge.conf.sample index 08a2dd3057..a4f829aa2c 100644 --- a/configs/confbridge.conf.sample +++ b/configs/confbridge.conf.sample @@ -197,6 +197,9 @@ type=bridge ; is the single source of video distribution among all participants. If ; that user leaves, the marked user to join after them becomes the source. +;language=en ; Set the language used for announcements to the conference. + ; Default is en (English). + ; All sounds in the conference are customizable using the bridge profile options below. ; Simply state the option followed by the filename or full path of the filename after ; the option. Example: sound_had_joined=conf-hasjoin This will play the conf-hasjoin