[Home]

Summary:ASTERISK-19983: ConfBridge does not expose a mechanism to change the language on the Bridging channel, defaulting to 'en'
Reporter:Jonathan White (londonnet)Labels:
Date Opened:2012-06-11 18:17:46Date Closed:2013-10-08 15:18:01
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Applications/app_confbridge
Versions:10.5.0 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Centos 5.8 32bitAttachments:( 0) M19983_rev2.diff
( 1) M19983.diff
Description:I am setting the language in the dialplan
same =>n,Set(CHANNEL(language)=gb-m

Confrbridge plays sounds in the selected language except join and leave messages played to conference participants or in the recording.

Confbridge defaults to language "en".

Example output from asterisk consle:

   -- <SIP/2581-00000002> Playing 'auth-thankyou.alaw' (language 'gb-m')
   -- <SIP/2581-00000002> Playing 'conf-placeintoconf.alaw' (language 'gb-m')
   -- <Bridge/0xa138f88-input> Playing '/var/spool/asterisk/confbridge/confbridge-name-1002-1339456753.8.slin' (language 'en')
 == Begin MixMonitor Recording ConfBridgeRecorder/conf-1002-uid-818536622
   -- <Bridge/0xa138f88-input> Playing 'conf-hasjoin.gsm' (language 'en')
   -- <SIP/2581-00000002> Playing 'confbridge-join.alaw' (language 'gb-m')
   -- <Bridge/0xa138f88-input> Playing 'confbridge-join.gsm' (language 'en')
   -- <Bridge/0xa138f88-input> Playing '/var/spool/asterisk/confbridge/confbridge-name-1002-1339456753.8.slin' (language 'en')
   -- <Bridge/0xa138f88-input> Playing 'conf-hasleft.gsm' (language 'en')
   -- <Bridge/0xa138f88-input> Playing 'confbridge-leave.gsm' (language 'en')
 == MixMonitor close filestream (mixed)

The following files do exist:
/var/lib/asterisk/sounds/gb-m/confbridge-join.alaw
/var/lib/asterisk/sounds/gb-m/confbridge-join.gsm
/var/lib/asterisk/sounds/gb-m/confbridge-join.ulaw
/var/lib/asterisk/sounds/gb-m/confbridge-join.slin
/var/lib/asterisk/sounds/gb-m/confbridge-join.wav

/var/lib/asterisk/sounds/gb-m/confbridge-leave.alaw
/var/lib/asterisk/sounds/gb-m/confbridge-leave.gsm
/var/lib/asterisk/sounds/gb-m/confbridge-leave.ulaw
/var/lib/asterisk/sounds/gb-m/confbridge-leave.slin
/var/lib/asterisk/sounds/gb-m/confbridge-leave.wav

In the call I can press * and hear gb-m language prompts but not join and leave messages in the call or on the recording.

Sometimes I get confbridge-join played to the joining caller at twice the normal volume but not with the recorded name just the confbridge-join prompt.

This issue also shows with other languages which have the confbridge-join confbridge-leave present.

occasionally courses an asterisk ended with exit status 127 during audio playback
Comments:By: Matt Jordan (mjordan) 2012-06-19 07:48:53.569-0500

First, please keep a single JIRA issue tied to a single problem.  Trying to combine issues in a single JIRA issue typically leaves the issue in a mess, and the state of what is being addressed unknown.  As such, I've renamed this issue to:

"ConfBridge does not expose a mechanism to change the language on the Bridging channel, defaulting to 'en'".

When you call same =>n,Set(CHANNEL(language)=gb-m in the dialplan, that is setting the language on the channel joining the conference.  However, ConfBridge uses an internal channel called the Bridging channel (which you can see in your logs) that performs the mixing for the paticipants in a conference.  As such, the dialplan does not 'set' information on that channel - and so your language settings are not propagated to it.

For your other issues, please file separate JIRA issues so that they can be Triaged, debugged, and handled separately.

By: Jonathan White (londonnet) 2012-06-19 11:48:22.866-0500

Thanks for the response. I had thought the issues were linked but will take your advice and create a separate case for the confbridge announcements.

So are we saying there is currently no way of setting the Bridging channels language?

A setting much like same =>n,Set(CONFBRIDGE(bridge,record_file)= would be useful for both the dialplan and the confbridge config files.

Perhaps
same =>n,Set(CONFBRIDGE(bridge,language)=

Best regards


By: Jonathan White (londonnet) 2012-06-22 09:31:57.393-0500

Thinking about how this might work, if this feature became available poses a small problem. I am currently using different dial in numbers to set the channel language. If I used the same variable to set the Bridging channel there is a potential for the Bridging language to be over written. If this feature was to be introduced perhaps it should be locked to the first language received or to the language the admin user is using.

By: Jonathan White (londonnet) 2013-09-05 02:48:22.356-0500

A number of versions of confbridge have been released since this issue was reported. What is the correct process to request this be added as a feature in later versions of confbridge?

I see this case is still open but does it have any visibility to the Dev team?

Thanks

By: David Woolley (davidw) 2013-09-05 05:27:49.502-0500

Submit a patch, against the trunk version, that implements the feature.

Failing that, raise it on the developer mailing list or IRC channel.

By: Clod Patry (junky) 2013-09-11 22:09:42.519-0500

patch with Revision 398920

By: Clod Patry (junky) 2013-09-11 22:13:43.269-0500

Just as a proof of concept to get feedback.

[junky]
exten => s,1,Set(CHANNEL(language)=fr)
exten => s,n,Set(CONFBRIDGE(bridge,language)=fr)
exten => s,n,Confbridge(french_bridge)


results in:
   -- Executing [s@junky:1] Set("Console/dsp", "CHANNEL(language)=fr") in new stack
   -- Executing [s@junky:2] Set("Console/dsp", "CONFBRIDGE(bridge,language)=fr") in new stack
   -- Executing [s@junky:3] ConfBridge("Console/dsp", "french_bridge") in new stack
<< Console call has been answered >>
   -- <Console/dsp> Playing 'conf-onlyperson.gsm' (language 'fr')
   -- <Console/dsp> Playing 'confbridge-join.gsm' (language 'fr')
[Sep 11 23:07:31] WARNING[26050][C-00000000]: app_confbridge.c:1344 alloc_playback_chan: Playback channel language is 'fr'
   -- <CBAnn/french_bridge-00000000;1> Playing 'confbridge-join.gsm' (language 'fr')
   -- Channel CBAnn/french_bridge-00000000;2 joined 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
[Sep 11 23:07:31] WARNING[26032]: cdr.c:2587 handle_bridge_enter_message: No CDR for channel CBAnn/french_bridge-00000000;2
   -- Channel CBAnn/french_bridge-00000000;2 left 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
[Sep 11 23:07:31] WARNING[26033]: cdr.c:2143 handle_bridge_leave_message: No CDR for channel CBAnn/french_bridge-00000000;2
   -- Channel Console/dsp joined 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
   -- Channel Console/dsp left 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
   -- Channel CBAnn/french_bridge-00000000;2 joined 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
[Sep 11 23:07:38] WARNING[26007]: cdr.c:2587 handle_bridge_enter_message: No CDR for channel CBAnn/french_bridge-00000000;2
   -- <CBAnn/french_bridge-00000000;1> Playing 'confbridge-leave.gsm' (language 'fr')
   -- Channel CBAnn/french_bridge-00000000;2 left 'softmix' base-bridge <ba471847-8ee2-4d76-b863-79a4556a5633>
[Sep 11 23:07:38] WARNING[26007]: cdr.c:2143 handle_bridge_leave_message: No CDR for channel CBAnn/french_bridge-00000000;2


So like you can see the join and leave sounds uses what you passed to CONFBRIDGE(bridge,language)=foo.

I made totally separated from channel language, since an english channel could join this french conference. In this case french will be used for all users in the conf, but the english will hear some prompts i english as well.



By: Matt Jordan (mjordan) 2013-09-13 17:10:14.505-0500

A few things.

# You shouldn't get those CDR warnings. I'll have to look into that.
# Your documentation is incorrect in the patch:
{noformat}
+ <description><para>
+ Set confbridge-join and confbridge-leave correctly
+ </para></description>
{noformat}
I'm pretty sure that isn't what the new option is doing :-)
# Remove the WARNING messages; remove extra spaces around strcmp:
{noformat}
+ if ( strcmp(conference->b_profile.language,"")) {
+ ast_channel_language_set(conference->playback_chan, conference->b_profile.language);
+ ast_log(LOG_WARNING, "Playback channel language is '%s'\n", conference->b_profile.language);
+ } else {
+ ast_log(LOG_WARNING, "Playback channel language is using default");
+ }
{noformat}



By: Clod Patry (junky) 2013-09-13 23:26:43.617-0500

I improved my previous patch a bit.
Added Language to the CLI command "confbridge show profile bridge foo"
Fixed matt #2.
the strcmp in #3 was not required.

You can use language=foo in your type=bridge section instead or continue to call CONFBRIDGE(bridge,language)=foo.

Matt, I think your point #1 is totally a separated bug. Is there something already opened for that? I cant find something with that atm.



By: Matt Jordan (mjordan) 2013-09-15 17:19:48.736-0500

It is something completely separate, and is a problem only in Asterisk 12. I should have a fix for that in this weekend/week.

By: Matt Jordan (mjordan) 2013-09-15 17:20:53.277-0500

M19883_rev2.diff looks good to me. Ship It!

By: Matt Jordan (mjordan) 2013-09-15 17:22:18.033-0500

And I agree with Olle, this really is a bug. Feel free to commit this into 11, 12, and trunk. For 11, an UPGRADE notice noting that there is a new option in confbridge.conf for setting the language for announcements may be nice.