<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2160/1/7/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/ConfBridge+1.10">ConfBridge 1.10</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~mdavenport">Malcolm Davenport</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >* Ekiga - Ekiga wasn&#39;t tested, because our test camera wasn&#39;t supported by the client.  The same camera was supported by other soft clients. <br>* SIPDroid - SIPDroid doesn&#39;t seem to work. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">* OfficeSIP Messenger - OfficeSIP Messenger didn&#39;t seem capable of performing a SIP registration.  On this basis alone, no one should recommend its use. <br></td></tr>
            <tr><td class="diff-unchanged" > <br>h4. Mixing Interval <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <div>
<ul>
    <li><a href='#ConfBridge1.10-Overview'>Overview</a></li>
    <li><a href='#ConfBridge1.10-ConfBridgeConcepts'>ConfBridge Concepts</a></li>
    <li><a href='#ConfBridge1.10-ConfBridgeConfiguration'>ConfBridge Configuration</a></li>
<ul>
    <li><a href='#ConfBridge1.10-BridgeProfileConfigurationOptions'>Bridge Profile Configuration Options</a></li>
    <li><a href='#ConfBridge1.10-UserProfileConfigurationOptions'>User Profile Configuration Options</a></li>
    <li><a href='#ConfBridge1.10-ConferenceMenuConfigurationOptions'>Conference Menu Configuration Options</a></li>
</ul>
    <li><a href='#ConfBridge1.10-ConfBridgeDialplanSyntax'>ConfBridge Dialplan Syntax</a></li>
    <li><a href='#ConfBridge1.10-ConfBridgeDialplanFunctions'>ConfBridge Dialplan Functions</a></li>
<ul>
    <li><a href='#ConfBridge1.10-Syntax'>Syntax</a></li>
    <li><a href='#ConfBridge1.10-Syntax'>Syntax</a></li>
</ul>
    <li><a href='#ConfBridge1.10-ConfBridgeCLIOptions'>ConfBridge CLI Options</a></li>
    <li><a href='#ConfBridge1.10-ConfBridgeAsteriskManagerInterface%28AMI%29Actions'>ConfBridge Asterisk Manager Interface (AMI) Actions</a></li>
    <li><a href='#ConfBridge1.10-ConfBridgeAsteriskManagerInterface%28AMI%29Events'>ConfBridge Asterisk Manager Interface (AMI) Events</a></li>
    <li><a href='#ConfBridge1.10-UsageNotes%2CFAQandOther'>Usage Notes, FAQ and Other</a></li>
</ul></div>

<h2><a name="ConfBridge1.10-Overview"></a>Overview</h2>

<p>Asterisk, since its early days, has offered a conferencing application called MeetMe (app_meetme.so).  MeetMe provides DAHDI-mixed software-based bridges for multi-party audio conferencing.  MeetMe is used by nearly all Asterisk implementations - small office, call center, large office, feature-server, third-party application, etc.  It has been extremely successful as an audio bridge.</p>

<p>Over time, several significant limitations of MeetMe have been encountered by its users.  Among these are two of distinction:  MeetMe requires DAHDI for mixing, and is thus limited to 8kHz (PSTN) audio sampling rates; and MeetMe is delivered in a fairly static form, it does not provide extensive configuration options.</p>

<p>To address these limitations, a new conferencing application, based upon the ConfBridge application introduced in Asterisk 1.6.0, is now available with Asterisk 1.10.  This new ConfBridge application replaces the older ConfBridge application.  It is not intended to be a direct replacement for MeetMe, it will not provide feature parity with the MeetMe application.  Instead, the new ConfBridge application delivers a completely redesigned set of functionality that most users will find more than sufficient, and in many ways better, for their conferencing needs.</p>

<h2><a name="ConfBridge1.10-ConfBridgeConcepts"></a>ConfBridge Concepts</h2>

<p>ConfBridge provides four internal concepts:</p>
<ol>
        <li>Conference Number</li>
        <li>Bridge Profile</li>
        <li>User Profile</li>
        <li>Conference Menu</li>
</ol>


<p>A <b>Conference Number</b> is a numerical representation for an instance of the bridge.  Callers joined to the same conference number will be in the same conference bridge; they're connected.  Callers joined to different conference numbers are not in the same conference bridge; they're separated.  Conference Numbers are assigned in the dialplan.  Unlike MeetMe, they're not pre-reserved.</p>

<p>A <b>Bridge Profile</b> is a named set of options that control the behavior of a particular conference bridge.  Each bridge must have its own profile.  A single bridge cannot have more than one Bridge Profile.</p>

<p>A <b>User Profile</b> is a named set of options that control the user's experience as a member of a particular bridge.  Each user participating in a bridge can have their own individual User Profile.</p>

<p>A <b>Conference Menu</b> is a named set of options that are provided to a user when they present DTMF keys while connected to the bridge.  Each user participating in a bridge can have their own individual Conference Menu.</p>

<h2><a name="ConfBridge1.10-ConfBridgeConfiguration"></a>ConfBridge Configuration</h2>

<p>ConfBridge Profiles and Menus are configured in the confbridge.conf configuration file - normally located at /etc/asterisk/confbridge.conf.  The file contains three reserved sections:</p>

<ul>
        <li>[general]</li>
        <li>[default_bridge]</li>
        <li>[default_user]</li>
</ul>


<p>The <b>[general]</b> section is currently unused, but is reserved for future use.<br/>
The <b>[default_bridge]</b> section contains all options invoked when ConfBridge is instantiated from the dialplan without a bridge profile argument.<br/>
The <b>[default_user]</b> section contains all options invoked when ConfBridge is instantiated from the dialplan without a user profile argument.</p>

<p>Each section contains a <b>type</b> definition.  The type definition determines the function of the section.  The three <b>types</b> are:</p>

<ul>
        <li>bridge</li>
        <li>user</li>
        <li>menu</li>
</ul>


<p><b>bridge</b> is used to denote Bridge Profile section definitions.<br/>
<b>user</b> is used to denote User Profile section definitions.<br/>
<b>menu</b> is used to denote Conference Menu section definitions.</p>

<p>All other sections, defined by a section identifier encapsulated in square brackets, are user-definable.</p>

<p><b>Example</b></p>

<p>This is an example, using invalid options and functions, of a confbridge.conf configuration file, displaying the organizational layout.  The various options and functions are described later in this page.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[general]
; comments are preceded by a comma
;
; the general section is blank
;
[default_bridge]
type=bridge
; Bridge Profile options go here
myoption=value
myoption2=othervalue
;
[default_user]
type=user
; User Profile options go here
myoption=value
myoption2=othervalue
;
[sample_menu]
type=menu
; Conferece Menu options go here
DTMF=function
otherDTMF=otherFunction
;
</pre>
</div></div>

<h3><a name="ConfBridge1.10-BridgeProfileConfigurationOptions"></a>Bridge Profile Configuration Options</h3>

<p>A Bridge Profile provides the following configuration options:</p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Option </th>
<th class='confluenceTh'>Values </th>
<th class='confluenceTh'>Description</th>
</tr>
<tr>
<td class='confluenceTd'> type </td>
<td class='confluenceTd'> bridge </td>
<td class='confluenceTd'> Set this to bridge to configure a bridge profile </td>
</tr>
<tr>
<td class='confluenceTd'> max_members </td>
<td class='confluenceTd'> integer; e.g. 50 </td>
<td class='confluenceTd'> Limits the number of participants for a single conference to a specific number.  By default, conferences have no participant limit.  After the limit is reached, the conference will be locked until someone leaves.  Admin-level users are exempt from this limit and will still be able to join otherwise-locked, because of limit, conferences. </td>
</tr>
<tr>
<td class='confluenceTd'> record_conference </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Records the conference call starting when the first user enters the room, and ending when the last user exits the room.  The default recorded filename is 'confbridge-&lt;name of conference bridge&gt;-&lt;start time&gt;.wav and the default format is 8kHz signed linear.  By default, this option is disabled.  This file will be located in the configured monitoring directory as set in asterisk.conf </td>
</tr>
<tr>
<td class='confluenceTd'> record_file </td>
<td class='confluenceTd'> path, e.g. /tmp/myfiles </td>
<td class='confluenceTd'> When record_conference is set to yes, the specific name of the recorded file can be set using this option.  Note that since multiple conferences may use the same Bridge profile, this can cause issues, depending on the configuration.  It is recommended to only use this option dynamically with the CONFBRIDGE() dialplan function.  This allows the recorded name to be specified and a unique name to be chosen.  By default, the recorded file is stored in Asterisk's spool/monitory directory, with a unique filename starting with the 'confbridge' prefix. </td>
</tr>
<tr>
<td class='confluenceTd'> internal_sample_rate </td>
<td class='confluenceTd'> auto, 8000, 12000, 16000, 24000, 32000, 44100, 48000, 96000, 192000 </td>
<td class='confluenceTd'> Sets the internal native sample rate at which to mix the conference.  The "auto" option allows Asterisk to adjust the sample rate to the best quality / performance based on the participant makeup.  Numbered values lock the rate to the specified numerical rate.  If a defined number does not match an internal sampling rate supported by Asterisk, the nearest sampling rate will be used instead. </td>
</tr>
<tr>
<td class='confluenceTd'> mixing_interval </td>
<td class='confluenceTd'> 10, 20, 40, 80 </td>
<td class='confluenceTd'> Sets, in milliseconds, the internal mixing interval.  By default, the mixing interval of a bridge is 20ms.  This setting reflects how "tight" or "loose" the mixing will be for the conference.  Lower intervals provide a "tighter" sound with less delay in the bridge and consume more system resources.  Higher intervals provide a "looser" sound with more delay in the bridge and consume less resources  </td>
</tr>
<tr>
<td class='confluenceTd'> video_mode </td>
<td class='confluenceTd'> none, follow_talker, last_marked, first_marked </td>
<td class='confluenceTd'> Configured video (as opposed to audio) distribution method for conference participants.  Participants must use the same video codec.  Confbridge does not provide MCU functionality.  It does not transcode, scale, transrate, or otherwise manipulate the video.  Options are "none," where no video source is set by default and a video source may be later set via AMI or DTMF actions; "follow_talker," where video distrubtion follows whomever is talking and providing video; "last_marked," where the last marked user with video capabilities to join the conference will be the single video source distributed to all other participants - when the current video source leaves, the marked user previous to the last-joined will be used as the video source; and "first-marked," where the first marked user with video capabilities to join the conference will be the single video source distributed to all other participants - when the current video source leaves, the marked user that joined next will be used as the video source.  Use of video in conjunction with the jitterbuffer results in the audio being slightly out of sync with the video - because the jitterbuffer only operates on the audio stream, not the video stream.  Jitterbuffer should be disabled when video is used. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_join </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to the bridge when a user joins, typically some kind of beep sound </td>
</tr>
<tr>
<td class='confluenceTd'> sound_leave </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to the bridge when a user leaves, also typically some kind of beep sound </td>
</tr>
<tr>
<td class='confluenceTd'> sound_has_joined </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played as a user intro, e.g. "xxxx has joined the conference." </td>
</tr>
<tr>
<td class='confluenceTd'> sound_has_left </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played as a user parts the conference, e.g. "xxxx has left the conference." </td>
</tr>
<tr>
<td class='confluenceTd'> sound_kicked </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to a user who has been kicked from the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_muted </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to a user when the mute option is toggled on. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_unmuted </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to a user when the mute option is toggled off. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_only_person </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when a user is the only person in the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_only_one </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to a user when there is only one other person in the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_there_are </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when announcing how many users there are in a conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_other_in_party </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> Used in conjunction with the sound_there_are option, used like "sound_there_are" &lt;number of participants&gt; "sound_other_in_party" </td>
</tr>
<tr>
<td class='confluenceTd'> sound_place_into_conference </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when someone is placed into a conference, after waiting for a marked user. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_wait_for_leader </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when a user is placed into a conference that cannot start until a marked user enters. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_leader_has_left </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when the last marked user leaves the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_get_pin </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when prompting for a conference PIN </td>
</tr>
<tr>
<td class='confluenceTd'> sound_invalid_pin </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when an invalid PIN is entered too many (3) times </td>
</tr>
<tr>
<td class='confluenceTd'> sound_locked </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to a user trying to join a locked conference. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_locked_now </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to an Admin-level user after toggling the conference to locked mode. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_unlocked_now </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played to an Admin-level user after toggling the conference to unlocked mode. </td>
</tr>
<tr>
<td class='confluenceTd'> sound_error_menu </td>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The sound played when an invalid menu option is entered. </td>
</tr>
</tbody></table>
</div>


<p><b>Example</b><br/>
In this example, a Bridge Profile called "fancybridge" will be created.  It will be configured to allow up to 20 callers, and will be set to mix at 10ms (tight mixing) at an automatic sampling rate.  Additionally, it will be recorded.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[fancybridge]
type=bridge
max_members=20
mixing_interval=10
internal_sample_rate=auto
record_conference=yes
</pre>
</div></div>


<h3><a name="ConfBridge1.10-UserProfileConfigurationOptions"></a>User Profile Configuration Options</h3>

<p>A User Profile provides the following configuration options:</p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Option </th>
<th class='confluenceTh'>Values </th>
<th class='confluenceTh'>Description</th>
</tr>
<tr>
<td class='confluenceTd'> type </td>
<td class='confluenceTd'> user </td>
<td class='confluenceTd'> Set this to user to configure a user profile </td>
</tr>
<tr>
<td class='confluenceTd'> admin </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets if the user is an Admin or not.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> marked </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets if the user is Marked or not.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> startmuted </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> sets if the user should start out muted.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> music_on_hold_when_empty </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets whether music on hold should be played when only one person is in the conference or when the user is waiting on a marked user to enter the conference.  By default, off. </td>
</tr>
<tr>
<td class='confluenceTd'> quiet </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> When set to "yes," enter/leave prompts and user introductions are not played.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> announce_user_count </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets if the number of users in the conference should be announced to the caller.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> announce_user_count_all </td>
<td class='confluenceTd'> yes/no; or an integer </td>
<td class='confluenceTd'> Sets if the number of users should be announced to all other users in the conference when someone joins.  When set to a number, the announcement will only occur once the user count is above the specified number </td>
</tr>
<tr>
<td class='confluenceTd'> announce_only_user </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets if the only user announcement should be played when someone enters an empty conference.  By default, yes. </td>
</tr>
<tr>
<td class='confluenceTd'> wait_marked </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets if the user must wait for another marked user to enter before joining the conference. By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> end_marked </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> If enabled, every user with this option in their profile will be removed from the conference when the last marked user exists the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> dsp_drop_silence </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Drops what Asterisk detects as silence from entering into the bridge.  Enabling this option will drastically improve performance and help remove the buildup of background noise from the conference.  This option is highly recommended for large conferences, due to its performance improvements. </td>
</tr>
<tr>
<td class='confluenceTd'> dsp_talking_threshold </td>
<td class='confluenceTd'> integer in milliseconds </td>
<td class='confluenceTd'> The time, in milliseconds, by default 160, of sound above what the DSP has established as base-line silence for a user, before that user is considered to be talking.  This value affects several options:
<ol>
        <li>Audio is only mixed out of a user's incoming audio stream if talking is detected.  If this value is set too loose, the user will hear themselves briefly each time they begin talking until the DSP has time to establish that they are in fact talking.</li>
        <li>When talker detection AMI events are enabled, this value determines when talking has begun, which causes AMI events to fire.  If this value is set too tight, AMI events may be falsely triggered by variants in the background noise of the caller.</li>
        <li>The drop_silence option depends on this value to determine when the user's audio should be mixed into the bridge after periods of silence.  If this value is too loose, the beginning of a user's speech will get cut off as they transition from silence to talking.</li>
</ol>
</td>
</tr>
<tr>
<td class='confluenceTd'> dsp_silence_threshold </td>
<td class='confluenceTd'> integer in milliseconds </td>
<td class='confluenceTd'> The time, in milliseconds, by default 2500, of sound falling within what the DSP has established as the baseline silence, before a user is considered to be silent.  The best way to approach this option is to set it slightly above the maximum amount of milliseconds of silence a user may generate during natural speech.  This value affects several operations:
<ol>
        <li>When talker detection AMI events are enabled, this value determines when the user has stopped talking after a period of talking.  If this value is set too low, AMI events indicating that the user has stopped talking may get faslely sent out when the user briefly pauses during mid sentence.</li>
        <li>The drop_silence option depends on this value to determine when the user's audio should begin to be dropped from the bridge, after the user stops talking.  If this value is set too low, the user's audio stream may sound choppy to other participants.</li>
</ol>
</td>
</tr>
<tr>
<td class='confluenceTd'> talk_detection_events </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Sets whether or not notifications of when a user begins and ends talking should be sent out as events over AMI. By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> denoise </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Whether or not a noise reduction filter should be applied to the audio before mixing.  By default, off.  This requires codec_speex to be built and installed.  Do not confuse this option with drop_silence.  denoise is useful if there is a lot of background noise for a user, as it attempts to remove the noise while still preserving the speech.  This option does not remove silence from being mixed into the conference and does come at the cost of a slight performance hit. </td>
</tr>
<tr>
<td class='confluenceTd'> jitterbuffer </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Whether or not to place a jitter buffer on the caller's audio stream before any audio mixing is performed.  This option is highly recommended, but will add a slight delay to the audio and will incur a slight performance penalty.  This option makes use of the JITTERBUFFER dialplan function's default adaptive jitter buffer.  For a more fine-tuned jitter buffer, disable this option and use the JITTERBUFFER dialplan function on the calling channel, before it enters the ConfBridge application. </td>
</tr>
<tr>
<td class='confluenceTd'> pin </td>
<td class='confluenceTd'> integer </td>
<td class='confluenceTd'> Sets if the user must enter a PIN before joining the conference.  The user will be prompted for the PIN. </td>
</tr>
<tr>
<td class='confluenceTd'> announce_join_leave </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> When enabled, this option prompts the user for their name when entering the conference.  After the name is recorded, it will be played as the user enters and exists the conference.  By default, no. </td>
</tr>
<tr>
<td class='confluenceTd'> dtmf_passthrough </td>
<td class='confluenceTd'> yes/no </td>
<td class='confluenceTd'> Whether or not DTMF received from users should pass through the conference to other users.  By default, no. </td>
</tr>
</tbody></table>
</div>


<p><b>Example</b><br/>
In this example, we will create a user profile called "fancyuser" that includes music on hold, user count announcements, join/leave announcements, silence detection, noise reduction and requires a PIN of 456.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[fancyuser]
type=user
music_on_hold_when_empty=yes
announce_user_count_all=yes
announce_join_leave=yes
dsp_drop_silence=yes
denoise=yes
pin=456
</pre>
</div></div>


<h3><a name="ConfBridge1.10-ConferenceMenuConfigurationOptions"></a>Conference Menu Configuration Options</h3>

<p>A Conference Menu provides the following configuration options:</p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Option </th>
<th class='confluenceTh'>Values </th>
<th class='confluenceTh'>Description</th>
</tr>
<tr>
<td class='confluenceTd'> type </td>
<td class='confluenceTd'> menu </td>
<td class='confluenceTd'> Set this to menu to configure a conference menu </td>
</tr>
<tr>
<td class='confluenceTd'> playback </td>
<td class='confluenceTd'> (&lt;name of audio file1&gt;&amp;&lt;name of audio file2&gt;&amp;...) </td>
<td class='confluenceTd'> Plays back an audio file, or a string of audio files chained together using the &amp; character, to the user and then immediately returns them to the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> playback_and_continue </td>
<td class='confluenceTd'> (&lt;name of audio file 1&gt;&amp;&lt;name of audio file 2&gt;&amp;...) </td>
<td class='confluenceTd'> Plays back an audio file, or a series of audio files chained together using the &amp; character, to the user while continuing the collect the DTMF sequence.  This is useful when using a menu prompt that describes all of the menu options.  Note that any DTMF during this action will terminate the prompt's playback. </td>
</tr>
<tr>
<td class='confluenceTd'> toggle_mute </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Toggles mute on and off.  When a user is muted, they will not be able to speak to other conference users, but they can still listen to other users.  While muted, DTMF keys from the caller will continue to be collected. </td>
</tr>
<tr>
<td class='confluenceTd'> no_op </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> This action does nothing.  Its only real purpose exists for being able to reserve a sequence in the configuration as a menu exit sequence. </td>
</tr>
<tr>
<td class='confluenceTd'> decrease_listening_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Decreases the caller's listening volume.  Everything they hear will sound quieter. </td>
</tr>
<tr>
<td class='confluenceTd'> increase_listening_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Increases the caller's listening volume.  Everything they hear will sound louder. </td>
</tr>
<tr>
<td class='confluenceTd'> reset_listening_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Resets the caller's listening volume to the default level. </td>
</tr>
<tr>
<td class='confluenceTd'> decrease_talking_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Decreases the caller's talking volume.  Everything they say will sound quieter to other callers. </td>
</tr>
<tr>
<td class='confluenceTd'> increase_talking_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Increases the caller's talking volume.  Everything they say will sound louder to other callers. </td>
</tr>
<tr>
<td class='confluenceTd'> reset_talking_volume </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Resets the caller's talking volume to the default level. </td>
</tr>
<tr>
<td class='confluenceTd'> dialplan_exec </td>
<td class='confluenceTd'> (context,exten,priority) </td>
<td class='confluenceTd'> Allows one to escape from the conference and execute commands in the dialplan.  Once the dialplan exits, the user will be put back into the conference. </td>
</tr>
<tr>
<td class='confluenceTd'> leave_conference </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Allows a user to exit the conference and continue execution in the dialplan. </td>
</tr>
<tr>
<td class='confluenceTd'> admin_kick_last </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Allows an Admin to remove the last participant from the conference.  This action only works for users whose User Profiles set them as conference Admins. </td>
</tr>
<tr>
<td class='confluenceTd'> admin_toggle_conference_lock </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Allows an Admin to toggle locking and unlocking the conference.  When the conference is locked, only other Admin users can join.  When the conference is unlocked, any user may join up to the limit defined by the max_members Bridge Profile option. This action only works for users whose User Profiles set them as conference Admins. </td>
</tr>
<tr>
<td class='confluenceTd'> set_as_single_video_src </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Allows a user to set themselves as the single video distribution source for all other participants.  This overrides the video_mode setting.  </td>
</tr>
<tr>
<td class='confluenceTd'> release_as_single_video_src </td>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Allows a user to release themselves as the single video source.  Upon release of the video source, and/or if video_mode is set to "none," this action will result in the conference returning to whatever video mode the Bridge Profile is using.  This action will have no effect if the user is not currently the video source.  The user is also not guaranteed that the use of this action will prevent them from becoming the video source later. </td>
</tr>
</tbody></table>
</div>



<p><b>Example</b><br/>
In this example, we'll create a menu called "fancymenu."  This menu will utilize many of the options listed above.  We will construct a features menu that plays when the user enters the &#42; character.  Since we will do this using the playback_and_continue option, we will define other menu items as being a "subset" of the &#42; command, e.g. &#42;4, so that once the user presses &#42;, they can listen to the menu options and then press the specific "after-star" option, e.g. 4, to affect the option.  Additionally, we will duplicate those same sub-features as non-&#42; features, so that the user does not need to have entered the &#42; menu structure in order to affect the options, they can just press the key, e.g. "4" at any time, regardless of whether or not they're in the &#42;&#45;tree.  </p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[fancymenu]
type=menu
*=playback_and_continue(conf-togglemute&amp;press&amp;digits/1&amp;silence/1&amp;conf-leave&amp;press&amp;digits/2&amp;silence/1&amp;add-a-caller&amp;press&amp;digits/3&amp;silence/1&amp;conf-decrease-talking&amp;press&amp;digits/4&amp;silence/1&amp;reset-talking&amp;press&amp;digits/5&amp;silence/1&amp;increase-talking&amp;press&amp;digits/6&amp;silence/1&amp;conf-decrease-listening&amp;press&amp;digits/7&amp;silence/1&amp;conf-reset-listening&amp;press&amp;digits/8&amp;silence/1&amp;conf-increase-listening&amp;press&amp;digits/9&amp;silence/1&amp;conf-exit-menu&amp;press&amp;digits/0)
*1=toggle_mute
1=toggle_mute
*2=leave_conference
2=leave_conference
*3=dialplan_exec(addcallers,1,1)
3=dialplan_exec(addcallers,1,1)
*4=decrease_listening_volume
4=decrease_listening_volume
*5=reset_listening_volume
5=reset_listening_volume
*6=increase_listening_volume
6=increase_listening_volume
*7=decrease_talking_volume
7=decrease_talking_volume
*8=reset_talking_volume
8=reset_talking_volume
*9=increase_talking_volume
9=increase_talking_volume
*0=no_op
0=no_op
</pre>
</div></div>

<p>Of particular note in this example, we're calling the dialplan_exec option.  Here, we're specifying "addcaller,1,1." This means that when someone dials 3, Asterisk will escape them out of the bridge momentarily to go execute priority 1 of extension 1 in the addcaller context of the dialplan (extensions.conf).  Our dialplan, including the addcaller context, in this case, might look like:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[addcaller]
exten =&gt; 1,1,Originate(SIP/otherpeer,exten,conferences,100,1)

[conferences]
exten =&gt; 100,1,ConfBridge(1234)
</pre>
</div></div>

<p>Thus, when someone dials "3" while in the bridge, they'll Originate a call from the dialplan that puts SIP/otherpeer into the conference.  Once the dial has completed, the person that dialed "3" will find themselves back in the bridge, with the other participants.</p>

<h2><a name="ConfBridge1.10-ConfBridgeDialplanSyntax"></a>ConfBridge Dialplan Syntax</h2>

<p>The syntax for the new ConfBridge application is as follows:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>ConfBridge([confno][,bridge_profile[,user_profile[,menu]]])
</pre>
</div></div>

<p>The ConfBridge application takes the following arguments</p>

<ul>
        <li>confno - The conference number</li>
        <li>bridge_profile - The Bridge Brofile name from confbridge.conf.  When left blank, a dynamically built Bridge Profile created by the CONFBRIDGE dialplan function is searched for on the channel and, if available, used.  If no dynamic profile is found, the "default_bridge" profile found in confbridge.conf is used.
<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>It is important to note that while User Profiles are unique for each participant, Bridge Profiles are unique to the bridge, <b>not</b> the user.  So you can only create one Bridge Profile per conference</td></tr></table></div></li>
        <li>user_profile - The User Profile name from confbridge.conf.  When left blank, a dynamically built User Profile created by the CONFBRIDGE dialplan function is searched for on the channel and, if available, used.  If no dynamic profile is present, the "default_user" profile found in confbridge.conf is used.</li>
        <li>menu - The Conference Menu name from confbridge.conf.  No menu is applied by default if this option is left blank.</li>
</ul>


<p><b>Example 1</b><br/>
In this example, callers will be joined to conference number 1234, using the default Bridge Profile, the default User Profile, and no Conference Menu.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1,1,Answer()
exten =&gt; 1,n,ConfBridge(1234)
</pre>
</div></div>

<p><b>Example 2</b><br/>
In this example, callers will be joined to conference number 1234, with the default Bridge Profile, a User Profile called "1234_participants" and a Conference Menu called "1234_menu."</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1,1,Answer()
exten =&gt; 1,n,ConfBridge(1234,,1234_participants,1234_menu)
</pre>
</div></div>


<h2><a name="ConfBridge1.10-ConfBridgeDialplanFunctions"></a>ConfBridge Dialplan Functions</h2>

<p>The CONFBRIDGE dialplan function is used to set customized Bridge and/or User Profiles on a channel for the ConfBridge application.  It uses the same options defined in confbridge.conf and allows the creation of dynamic, dialplan-driven conferences.</p>

<h3><a name="ConfBridge1.10-Syntax"></a>Syntax</h3>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>CONFBRIDGE(type,option)
</pre>
</div></div>

<ul>
        <li>type - Refers to which type of profile the option belongs to.  Type can be either "bridge" or "user."</li>
        <li>option - Refers to the confbridge.conf option that is to be set dynamically on the channel.  This can also refer to an existing Bridge or User Profile by using the keyword "template."  In this case, an existing Bridge or User Profile can be appended or modified on-the-fly.</li>
</ul>


<h4><a name="ConfBridge1.10-Examples"></a>Examples</h4>

<p><b>Example 1</b><br/>
In this example, the custom set User Profile on this channel enables announce_join_leave (so users will be announced as they come and go), sets users to join muted (so that they're not able to speak), and pushes them into bridge "1."</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1,1,Answer()
exten =&gt; 1,n,Set(CONFBRIDGE(user,announce_join_leave)=yes)
exten =&gt; 1,n,Set(CONFBRIDGE(user,startmuted)=yes)
exten =&gt; 1,n,ConfBridge(1)
</pre>
</div></div>

<p><b>Example 2</b><br/>
In this example, we will include an existing User Profile, the default_user User Profile as defined in confbridge.comf, and we will set additional parameters (admin and marked) that aren't already defined in the default_user User Profile.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1,1,Answer()
exten =&gt; 1,n,Set(CONFBRIDGE(user,template)=default_user)
exten =&gt; 1,n,Set(CONFBRIDGE(user,admin)=yes)
exten =&gt; 1,n,Set(CONFBRIDGE(user,marked)=yes)
exten =&gt; 1,n,ConfBridge(1)
</pre>
</div></div>

<p>The CONFBRIDGE_INFO dialplan function is used to retrieve information about a conference, such as locked/unlocked status and the number of parties including admins and marked users.</p>

<h3><a name="ConfBridge1.10-Syntax"></a>Syntax</h3>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>CONFBRIDGE_INFO(type,conf)
</pre>
</div></div>

<ul>
        <li>type - Refers to which information type to be retrieved.  Type can be either "parties," "admins," "marked," or "locked."</li>
        <li>conf - Refers to the name of the conference being referenced.</li>
</ul>


<p>The CONFBRIDGE_INFO function returns a non-negative integer for valid conference identifiers, 0 or 1 for locked, and "" for invalid conference identifiers.</p>


<h2><a name="ConfBridge1.10-ConfBridgeCLIOptions"></a>ConfBridge CLI Options</h2>

<p>ConfBridge offers several options that may be invoked from the Asterisk CLI.</p>

<h5><a name="ConfBridge1.10-confbridgekick%3Cconference%3E%3Cchannel%3E"></a>confbridge kick &lt;conference&gt; &lt;channel&gt;</h5>
<p>Removes the specified channel from the conference, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge kick 1111 SIP/mypeer-00000000
Kicking SIP/mypeer-00000000 from confbridge 1111
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgelist"></a>confbridge list</h5>
<p>Shows a summary listing of all bridges, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge list
Conference Bridge Name           Users  Marked Locked?
================================ ====== ====== ========
1111                                  1      0 unlocked
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgelist%3Cconference%3E"></a>confbridge list &lt;conference&gt;</h5>
<p>Shows a detailed listing of participants in a specified conference, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge list 1111
Channel                       User Profile     Bridge Profile   Menu
============================= ================ ================ ================
SIP/mypeer-00000001          default_user     1111             sample_user_menu 
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgelock%3Cconference%3E"></a>confbridge lock &lt;conference&gt;</h5>
<p>Locks a specified conference so that only Admin users can join, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge lock 1111
Conference 1111 is locked.
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeunlock%3Cconference%3E"></a>confbridge unlock &lt;conference&gt;</h5>
<p>Unlocks a specified conference so that only Admin users can join, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge unlock 1111
Conference 1111 is unlocked.
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgemute%3Cconference%3E%3Cchannel%3E"></a>confbridge mute &lt;conference&gt; &lt;channel&gt;</h5>
<p>Mutes a specified user in a specified conference, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge mute 1111 SIP/mypeer-00000001
Muting SIP/mypeer-00000001 from confbridge 1111
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeunmute%3Cconference%3E%3Cchannel%3E"></a>confbridge unmute &lt;conference&gt; &lt;channel&gt;</h5>
<p>Unmutes a specified user in a specified conference, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge unmute 1111 SIP/mypeer-00000001
Unmuting SIP/mypeer-00000001 from confbridge 1111
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgerecordstart%3Cconference%3E%3Cfile%3E"></a>confbridge record start &lt;conference&gt; &lt;file&gt;</h5>
<p>Begins recording a conference.  If "file" is specified, it will be used, otherwise, the Bridge Profile record_file will be used.  If the Bridge Profile does not specify a record_file, one will be automatically generated in Asterisk's monitor directory.  Usage:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge record start 1111
Recording started
*CLI&gt;   == Begin MixMonitor Recording ConfBridgeRecorder/conf-1111-uid-618880445
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgerecordstop%3Cconfererence%3E"></a>confbridge record stop &lt;confererence&gt;</h5>
<p>Stops recording the specified conference, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge record stop 1111
Recording stopped.
*CLI&gt;   == MixMonitor close filestream (mixed)
  == End MixMonitor Recording ConfBridgeRecorder/conf-1111-uid-618880445
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeshowmenus"></a>confbridge show menus</h5>
<p>Shows a listing of Conference Menus as defined in confbridge.conf, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show menus
--------- Menus -----------
sample_admin_menu
sample_user_menu
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeshowmenu%3Cmenuname%3E"></a>confbridge show menu &lt;menu name&gt;</h5>
<p>Shows a detailed listing of a named Conference Menu, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show menu sample_admin_menu
Name: sample_admin_menu
*9=increase_talking_volume
*8=no_op
*7=decrease_talking_volume
*6=increase_listening_volume
*4=decrease_listening_volume
*3=admin_kick_last
*2=admin_toggle_conference_lock
*1=toggle_mute
*=playback_and_continue(conf-adminmenu)
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeshowprofilebridges"></a>confbridge show profile bridges</h5>
<p>Shows a listing of Bridge Profiles as defined in confbridge.conf, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show profile bridges
--------- Bridge Profiles -----------
1111
default_bridge
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeshowprofilebridge%3Cbridge%3E"></a>confbridge show profile bridge &lt;bridge&gt;</h5>
<p>Shows a detailed listing of a named Bridge Profile, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show profile bridge 1111 
--------------------------------------------
Name:                 1111
Internal Sample Rate: 16000
Mixing Interval:      10
Record Conference:    no
Record File:          Auto Generated
Max Members:          No Limit
sound_only_person:    conf-onlyperson
sound_has_joined:     conf-hasjoin
sound_has_left:       conf-hasleft
sound_kicked:         conf-kicked
sound_muted:          conf-muted
sound_unmuted:        conf-unmuted
sound_there_are:      conf-thereare
sound_other_in_party: conf-otherinparty
sound_place_into_conference: conf-placeintoconf
sound_wait_for_leader:       conf-waitforleader
sound_get_pin:        conf-getpin
sound_invalid_pin:    conf-invalidpin
sound_locked:         conf-locked
sound_unlocked_now:   conf-unlockednow
sound_lockednow:      conf-lockednow
sound_error_menu:     conf-errormenu
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbridgeshowprofileusers"></a>confbridge show profile users</h5>
<p>Shows a listing of User Profiles as defined in confbridge.conf, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show profile users
--------- User Profiles -----------
awesomeusers
default_user
</pre>
</div></div>

<h5><a name="ConfBridge1.10-confbirdgeshowprofileuser%3Cuser%3E"></a>confbirdge show profile user &lt;user&gt;</h5>
<p>Shows a detailed listing of a named Bridge Profile, e.g.:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>*CLI&gt; confbridge show profile user default_user 
--------------------------------------------
Name:                    default_user
Admin:                   false
Marked User:             false
Start Muted:             false
MOH When Empty:          enabled
MOH Class:               default
Quiet:                   disabled
Wait Marked:             disabled
END Marked:              disabled
Drop_silence:            enabled
Silence Threshold:       2500ms
Talking Threshold:       160ms
Denoise:                 disabled
Talk Detect Events:      disabled
DTMF Pass Through:       disabled
PIN:                     None
Announce User Count:     enabled
Announce join/leave:     enabled
Announce User Count all: enabled
</pre>
</div></div>

<h2><a name="ConfBridge1.10-ConfBridgeAsteriskManagerInterface%28AMI%29Actions"></a>ConfBridge Asterisk Manager Interface (AMI) Actions</h2>

<h5><a name="ConfBridge1.10-ConfbridgeList"></a>ConfbridgeList</h5>
<p>Lists all users in a particular ConfBridge conference.  ConfbridgeList will follow as separate events, followed by a final event  called ConfbridgeListComplete</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeList
Conference: 1111

Response: Success
EventList: start
Message: Confbridge user list will follow

Event: ConfbridgeList
Conference: 1111
CallerIDNum: malcolm
CallerIDName: malcolm
Channel: SIP/malcolm-00000000
Admin: No
MarkedUser: No

Event: ConfbridgeListComplete
EventList: Complete
ListItems: 1
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeListRooms"></a>ConfbridgeListRooms</h5>
<p>Lists data about all active conferences.  ConfbridgeListRooms will follow as separate events, followed by a final event called ConfbridgeListRoomsComplete.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeListRooms

Response: Success
EventList: start
Message: Confbridge conferences will follow

Event: ConfbridgeListRooms
Conference: 1111
Parties: 1
Marked: 0
Locked: No

Event: ConfbridgeListRoomsComplete
EventList: Complete
ListItems: 1
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeMute"></a>ConfbridgeMute</h5>
<p>Mutes a specified user in a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeMute
Conference: 1111
Channel: SIP/mypeer-00000001

Response: Success
Message: User muted
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeUnmute"></a>ConfbridgeUnmute</h5>
<p>Unmutes a specified user in a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeUnmute
Conference: 1111
Channel: SIP/mypeer-00000001

Response: Success
Message: User unmuted
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeKick"></a>ConfbridgeKick</h5>
<p>Removes a specified user from a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeKick
Conference: 1111
Channel: SIP/mypeer-00000001

Response: Success
Message: User kicked
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeLock"></a>ConfbridgeLock</h5>
<p>Locks a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeLock
Conference: 1111

Response: Success
Message: Conference locked
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeUnlock"></a>ConfbridgeUnlock</h5>
<p>Unlocks a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeUnlock
Conference: 1111

Response: Success
Message: Conference unlocked
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeStartRecord"></a>ConfbridgeStartRecord</h5>
<p>Starts recording a specified conference, with an optional filename.  If recording is already in progress, an error will be returned.  If RecordFile is not provided, the default record_file as specified in the conferences Bridge Profile will be used.  If record_file is not specified, a file will automatically be generated in Asterisk's monitor directory.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeStartRecord
Conference: 1111

Response: Success
Message: Conference Recording Started.

Event: VarSet
Privilege: dialplan,all
Channel: ConfBridgeRecorder/conf-1111-uid-1653801660
Variable: MIXMONITOR_FILENAME
Value: /var/spool/asterisk/monitor/confbridge-1111-1303309869.wav
Uniqueid: 1303309869.6
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeStopRecord"></a>ConfbridgeStopRecord</h5>
<p>Stops recording a specified conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeStopRecord
Conference: 1111

Response: Success
Message: Conference Recording Stopped.

Event: Hangup
Privilege: call,all
Channel: ConfBridgeRecorder/conf-1111-uid-1653801660
Uniqueid: 1303309869.6
CallerIDNum: &lt;unknown&gt;
CallerIDName: &lt;unknown&gt;
Cause: 0
Cause-txt: Unknown
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeSetSingleVideoSrc"></a>ConfbridgeSetSingleVideoSrc</h5>
<p>This action sets a conference user as the single video source distributed to all other video-capable participants.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Action: ConfbridgeSetSingleVideoSrc
Conference: 1111
Channel: SIP/mypeer-00000001

Response: Success
Message: Conference single video source set.
</pre>
</div></div>


<h2><a name="ConfBridge1.10-ConfBridgeAsteriskManagerInterface%28AMI%29Events"></a>ConfBridge Asterisk Manager Interface (AMI) Events</h2>

<h5><a name="ConfBridge1.10-ConfbridgeStart"></a>ConfbridgeStart</h5>
<p>This event is sent when the first user requests a conference and it is instantiated </p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeStart
Privilege: call,all
Conference: 1111
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeJoin"></a>ConfbridgeJoin</h5>
<p>This event is sent when a user joins a conference - either one already in progress or as the first user to join a newly instantiated bridge.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeJoin
Privilege: call,all
Channel: SIP/mypeer-00000001
Uniqueid: 1303309562.3
Conference: 1111
CallerIDnum: 1234
CallerIDname: mypeer
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeLeave"></a>ConfbridgeLeave</h5>
<p>This event is sent when a user leaves a conference.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeLeave
Privilege: call,all
Channel: SIP/mypeer-00000001
Uniqueid: 1303308745.0
Conference: 1111
CallerIDnum: 1234
CallerIDname: mypeer
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfbridgeEnd"></a>ConfbridgeEnd</h5>
<p>This event is sent when the last user leaves a conference and it is torn down.</p>

<p><b>Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeEnd
Privilege: call,all
Conference: 1111
</pre>
</div></div>

<h5><a name="ConfBridge1.10-ConfBridgeTalking"></a>ConfBridgeTalking</h5>
<p>This event is sent when the conference detects that a user has either begin or stopped talking.</p>

<p><b>Start talking Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeTalking
Privilege: call, all
Channel: SIP/mypeer-00000001
Uniqueid: 1303308745.0
Conference: 1111
TalkingStatus: on
</pre>
</div></div>

<p><b>Stop talking Example</b></p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Event: ConfbridgeTalking
Privilege: call, all
Channel: SIP/mypeer-00000001
Uniqueid: 1303308745.0
Conference: 1111
TalkingStatus: off
</pre>
</div></div>


<h2><a name="ConfBridge1.10-UsageNotes%2CFAQandOther"></a>Usage Notes, FAQ and Other</h2>

<p>There are many points to consider when using the new ConfBridge appliation.  Some will be examined here.</p>

<h4><a name="ConfBridge1.10-VideoConferencing"></a>Video Conferencing</h4>

<p>It is imperative that a video conference not have participants using disparate video codecs or encoding profiles.  Everyone <b>must</b> use the same codec and profile.  Otherwise, the video sessions won't work - you'll likely experience frozen video as the conference switches from one video stream using a codec your client has negotiated, to a video stream using a codec your client hasn't negotiated or doesn't support.</p>

<h5><a name="ConfBridge1.10-VideoEndpoints"></a>Video Endpoints</h5>

<p>ConfBridge has been tested against a number of video-capable SIP endpoints.  Success, and your mileage will vary.</p>

<p>Endpoints that work:</p>

<ul>
        <li>Jitsi - Jitsi works well for both H.264 and H.263+1998 video calling on Mac, Linux and Windows machines.  Currently, Jitsi seems to be the best-working, free, H.264-capable SIP video client.</li>
        <li>Linphone - Linphone works well for H.263+1998 and H.263 video calling on Linux - the Mac port and mobile ports do not support video.  Currently, Linphone seems to be the best-working, free, H.263-capable SIP video client, when Jitsi or H.263+1998 aren't an option.</li>
        <li>Empathy - Empathy works for H.264 calling, but is amazingly difficult to configure (why one has to make two SIP accounts just to make a SIP call is a mystery).</li>
        <li>Lifesize - The Lifesize client supports H.264 and runs on Windows only.  It works very well, but it isn't free.</li>
</ul>


<p>Endpoints that don't or weren't tested:</p>

<ul>
        <li>Xlite - Xlite works in some cases, but also seems to crash, regardless of operating system, at odd times.  In other cases, Xlite isn't able to decode video from clients.</li>
        <li>Ekiga - Ekiga wasn't tested, because our test camera wasn't supported by the client.  The same camera was supported by other soft clients.</li>
        <li>SIPDroid - SIPDroid doesn't seem to work.</li>
        <li>OfficeSIP Messenger - OfficeSIP Messenger didn't seem capable of performing a SIP registration.  On this basis alone, no one should recommend its use.</li>
</ul>


<h4><a name="ConfBridge1.10-MixingInterval"></a>Mixing Interval</h4>

<p>The mixing interval for a conference is defined in its Bridge Profile.  The allowable options are 10, 20, 40, and 80, all in milliseconds.  Usage of 80ms mixing intervals is only supported for conferences that are sampled at 8, 12, 16, 24, 32, and 48kHz.  Usage of 40ms intervals includes all of the aforementioned sampling rates as well as 96kHz.  192kHz sampled conferences are only supported at 10 and 20ms mixing intervals.  These limitations are imposed because higher mixing intervals at the higher sampling rates causes large increases in memory consumption.  Adventurous users may, through changing of the MAX_DATALEN define in bridge_softmix.c allow 96kHz and 192kHz sampled conferences to operate at longer intervals - set to 16192 for 96kHz at 80ms or 32384 for 192kHz at 80ms, recompile, and restart.</p>

<h4><a name="ConfBridge1.10-MaximizingPerformance"></a>Maximizing Performance</h4>

<p>In order to maximize the performance of a given machine for ConfBridge purposes, there are several steps one should take.  </p>

<ul>
        <li>Enable dsp_drop_silence is enabled in the User Profile.
        <ul>
                <li>This is the <b>single most</b> important step one can take when trying to increase the number of bridge participants that a single machine can handle.  Enabling this means that the audio of users that aren't speaking isn't mixed in with the bridge.</li>
        </ul>
        </li>
        <li>Lengthen mixing_interval in the Bridge Profile.
        <ul>
                <li>The default interval is 20ms.  Other options are 10, 40, and 80ms.  Lower values provide a "tighter" sound, but require substantially more CPU.  Higher values provider a "looser" sound, and consume substantially less CPU.  Setting the value to 80 provides the highest number of possible participants.</li>
        </ul>
        </li>
        <li>Connect clients at the same sampling rate.
        <ul>
                <li>Requiring the bridge to resample between clients that use codecs with different sampling rates is an expensive operation.  If all clients are dialed in to the bridge at the same sampling rate, and the bridge operates at that same rate, e.g. 16kHz, then the number of possible clients will be maximized.</li>
        </ul>
        </li>
        <li>Run Asterisk with a higher priority.
        <ul>
                <li>By default, Asterisk operates at a relatively normal priority, as compared to other processes on the system.  To maximize the number of possible clients, Asterisk should be started using the <b>-p</b> (realtime) flag.  If the load becomes too large, this can negatively impact the performance of other processes, including the console itself - making it difficult to remotely administer a fully loaded system.</li>
        </ul>
        </li>
</ul>


<p>As the number of clients approaches the maximum possible on the given machine, given its processing capabilities, audio quality will suffer.  Following the above guidelines will increase the number of connected clients before audio quality suffers.</p>

<h4><a name="ConfBridge1.10-SoundPrompts"></a>Sound Prompts</h4>

<p>The following Conference Menu and Bridge Profile options sound files are available as part of the latest Asterisk core sounds package - currently only available in the English language package.</p>

<ul>
        <li>confbridge-begin-glorious-a - "The conference will begin when our glorious leader arrives."</li>
        <li>confbridge-begin-glorious-b - "The conference will begin when our <b>glorious leader</b> arrives."</li>
        <li>confbridge-begin-glorious-c - "The conference will begin when our <b>glorious leader arrives.</b>"</li>
        <li>confbridge-conf-begin - "The conference will now begin."</li>
        <li>confbridge-conf-end - "The conference has ended."</li>
        <li>confbridge-dec-list-vol-in - "To decrease the audio volume from other participants..."</li>
        <li>confbridge-dec-list-vol-out - "...to decrease the audio volume from other participants."</li>
        <li>confbridge-dec-talk-vol-in - "To decrease your speaking volume to other participants..."</li>
        <li>confbridge-dec-talk-vol-out - "...to decrease your speaking volume to other participants."</li>
        <li>confbridge-has-joined - "...has joined the conference."</li>
        <li>confbridge-has-left - "...has left the conference."</li>
        <li>confbridge-inc-list-vol-in - "To increase the audio volume from other participants..."</li>
        <li>confbridge-inc-list-vol-out - "...to increase the audio volume from other participants."</li>
        <li>confbridge-inc-talk-vol-in - "To increase your speaking volume to other participants..."</li>
        <li>confbridge-inc-talk-vol-out - "...to increase your speaking volume to other participants."</li>
        <li>confbridge-invalid - "You have entered an invalid option."</li>
        <li>confbridge-leave-in - "To leave the conference..."</li>
        <li>confbridge-leave-out - "...to leave the conference."</li>
        <li>confbridge-lock-extended - "...to lock or unlock the conference.  When a conference is locked, only conference administrators can join."</li>
        <li>confbridge-lock-in - "To lock or unlock the conference."</li>
        <li>confbridge-lock-no-join - "The conference is currently locked and cannot be joined."</li>
        <li>confbridge-lock-out 0- "...to lock or unlock the conference."</li>
        <li>confbridge-locked - "The conference is now locked."</li>
        <li>confbridge-menu-exit-in - "To exit the menu..."</li>
        <li>confbridge-menu-exit-out - "...to exit the menu."</li>
        <li>confbridge-mute-extended - "...to mute or unmute yourself.  When you are muted, you cannot send audio to other participants; however you will still hear audio from other unmuted participants.</li>
        <li>confbridge-mute-in - "To mute or unmute yourself..."</li>
        <li>confbridge-mute-out - "...to mute or unmute yourself."</li>
        <li>confbridge-muted - "You are now muted."</li>
        <li>confbridge-only-one - "There is currently one other participant in the conference."</li>
        <li>confbridge-only-participant - "You are currently the only participant in the conference."</li>
        <li>confbridge-participants - "...participants in the conference."</li>
        <li>confbridge-pin-bad - "You have entered too many invalid personal identification numbers."</li>
        <li>confbridge-pin - "Please enter your personal identification number followed by the pound or hash key."</li>
        <li>confbridge-remove-last-in - "To remove the participant who most recently joined the conference..."</li>
        <li>confbridge-remove-last-out - "...to remove the participant who most recently joined the conference."</li>
        <li>confbridge-removed - "You have been removed from the conference."</li>
        <li>confbridge-rest-list-vol-in - "To reset the audio volume of the conference to the default level..."</li>
        <li>confbridge-rest-list-vol-out - "...to reset the audio volume of the conference to the default level."</li>
        <li>confbridge-rest-talk-vol-in - "To reset your speaking volume to the default level..."</li>
        <li>confbridge-rest-talk-vol-out - "...to reset your speaking volume to the default level."</li>
        <li>confbridge-there-are - "There are currently..."</li>
        <li>confbridge-unlocked - "The conference is now unlocked."</li>
        <li>confbridge-unmuted - "You are no longer muted."</li>
</ul>

    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/ConfBridge+1.10">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=13076234&revisedVersion=77&originalVersion=76">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/ConfBridge+1.10?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>