app_confbridge: Can now set the language used for announcements to the conference.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 8 Oct 2013 20:18:37 +0000 (20:18 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 8 Oct 2013 20:18:37 +0000 (20:18 +0000)
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
........

Merged revisions 400741 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 400742 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400744 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
apps/app_confbridge.c
apps/confbridge/conf_config_parser.c
apps/confbridge/include/confbridge.h
configs/confbridge.conf.sample

diff --git a/CHANGES b/CHANGES
index 6fc2b37..3c6748d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -161,6 +161,10 @@ ConfBridge
    when the recording is stopped and then re-started, the existing recording
    will be used and appended to.
 
+ * 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.
+
 ControlPlayback
 ------------------
  * The channel variable CPLAYBACKSTATUS may now return the value
index 47cfa0b..6f1420f 100644 (file)
@@ -1339,6 +1339,9 @@ static int alloc_playback_chan(struct confbridge_conference *conference)
                return -1;
        }
 
+       /* To make sure playback_chan has the same language of that profile */
+       ast_channel_language_set(conference->playback_chan, conference->b_profile.language);
+
        ast_debug(1, "Created announcer channel '%s' to conference bridge '%s'\n",
                ast_channel_name(conference->playback_chan), conference->name);
        return 0;
index 6c57f16..97c0696 100644 (file)
@@ -257,6 +257,15 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
                                                will be used.
                                        </para></description>
                                </configOption>
+                               <configOption name="language" default="en">
+                                       <synopsis>The language used for announcements to the conference.</synopsis>
+                                       <description><para>
+                                               By default, announcements to a conference use English.  Which means
+                                               the prompts played to all users within the conference will be
+                                               English.  By changing the language of a bridge, this will change
+                                               the language of the prompts played to all users.
+                                       </para></description>
+                               </configOption>
                                <configOption name="mixing_interval">
                                        <synopsis>Sets the internal mixing interval in milliseconds for the bridge</synopsis>
                                        <description><para>
@@ -1417,6 +1426,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);
@@ -1934,6 +1944,7 @@ int conf_load_config(void)
        aco_option_register(&cfg_info, "record_file_append", ACO_EXACT, bridge_types, "yes", OPT_BOOLFLAG_T, 1, FLDSET(struct bridge_profile, flags), BRIDGE_OPT_RECORD_FILE_APPEND);
        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);
index 7c2abda..71ae5f7 100644 (file)
@@ -192,6 +192,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 */
index 08a2dd3..a4f829a 100644 (file)
@@ -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