[asterisk-dev] Introducing the new ConfBridge

David Vossel dvossel at digium.com
Wed Feb 23 14:04:03 CST 2011


Howdy,

Over the next couple of weeks I will be working on a new feature set for ConfBridge.  In order to accomplish some of the features I have planned, a new configuration method for ConfBridge will be necessary.  This new configuration method is what I am bringing to you all today.  Before I get started on implementation I want to tell you all what I have planned and open the floor for feedback.

At the moment ConfBridge's configuration is centralized entirely in the dialplan.  The new configuration method will be a combination of a new confbridge.conf file and a new ConfBridge application syntax that takes advantage of the options declared in that config file.  This will result in a ConfBridge application that is much more powerful than the current application, but not backwards compatible with the ConfBridge syntax used in 1.8.  The lack of backwards compatibility with the previous syntax is unfortunate but necessary to achieve the new functionality we have planned.

--- ConfBridge Configuration Concepts

Bridge Profiles - Contains options such as mixing interval, internal sample rate, and other bridge specific options.

User Profiles - Contains options such as conference pins, marked user, noise gate filters, volume control, and other user specific options.

Menus - Custom mappings of DTMF sequences to conference actions.  This allows for different menus to be assigned to each individual user depending on their permissions.

--- ConfBridge Dialpan Syntax

The ConfBridge dialplan application now uses these three configuration concepts, bridge profiles, user profiles, and menus as arguments.  The new syntax will look like this ConfBridge([confno][,bridge profile[,user profile[,menu]]]). The only required argument to ConfBridge is the confno.  In the case of when no user or bridge profiles are provided, the options declared in the [general] section of confbridge.conf will be used.

--- Sample Configuration exercising these concepts.

; The general section is used to build the default bridge and user profile. Both bridge
; and user options can be declared here under this section.  When ConfBridge is called without
; any bridge or user profile arguments, the options in this section are exercised.

[general]
mix_interval=20
mix_sample_rate=dynamic ;adjust to best quality sample rate for the channels joined.
denoise=yes ; denoise every channel that joins the bridge

; Custom Bridge profiles can be made. These options take precedence over the general section when
; this profile is used.
[custom_bridge]
type=bridge
mix_interval=40
mix_sample_rate=32khz ;fixed 32khz internal sample rate for mixing.
wait_for_moderator=yes
end_conf_moderator=yes
join_sound=custom-join
exit_sound=custom-exit
auto_record=filename.wav

; Custom user profile can be made as well.  All users who join
; with this profile will be muted by default.
[silent_users]
type=user
mute=yes

; Custom Menus are created by mapping DTMF sequences to ConfBridge
; actions. This is a custom menu for the silent users so they can
; adjust their listening volume.
[silent_menu]
type=menu
'*'=playback_continue(silent-conf-menu)
'*1'=increase_rx_volume
'*2'=decrease_rx_volume

; Any number of user profiles can be created and applied to a
; single bridge.  Channels joining the bridge with this
; user profile will be asked for a pin and be marked as
; a moderator.
[moderator_users]
type=user
pin=1234
moderator=yes

; This menu is not that useful and is just for example purposes.
; It shows how more complex menu structures can be created.
[moderator_menu]
type=menu
'*'=playback_continue(conf-menu) ;play a prompt while continuing to gather DTMF sequence
'*1'=toggle_mute
'*2'=toggle_deaf
'*3'=toggle_deaf, toggle_mute  ;notice multiple actions can be associated with a single DTMF sequence
'*4'=dialplan_exec(context,priority)
'*5'=playback_continue(conf-menu2) ;play another prompt while collecting more of the DTMF sequence
'*51'=increase_tx_volume
'*52'=decrease_tx_volume
'*53'=increase_rx_volume
'*54'=decrease_rx_volume

--- Using the sample configuration in the dialplan with the ConfBridge app.

; users who can only listen to the conference call this extension
exten => muted_listener,1,Answer()
exten => muted_listener,n,ConfBridge(1111, custom_bridge, silent_user, silent_menu)

;Moderators call this extension but have to put in a pin because they are a moderator_user.
exten => moderator,1,Answer()
exten => moderator,n,Conf(1111, custom_bridge, moderator_user, moderator_menu)
-----------------------------------------------

I look forward to any feedback you have to offer on this new configuration method!

David Vossel
Digium, Inc. | Software Developer, Open Source Software
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at: www.digium.com & www.asterisk.org
The_Boy_Wonder in #asterisk-dev




More information about the asterisk-dev mailing list