[general]
; The general section of this config
; is not currently used, but reserved
; for future use.

;
; --- Default Information ---
; The default_user and default_bridge sections are applied
; automatically to all ConfBridge instances invoked without
; a user, or bridge argument.  No menu is applied by default.
;
; Note that while properties of the default_user or default_bridge
; profile can be overridden, if removed, they will be automatically
; added and made available to the dialplan upon module load.
;

; --- ConfBridge User Profile Options ---
[default_user]
type=user
;admin=yes     ; Sets if the user is an admin or not. Off by default.

;send_events=no  ; If events are enabled for this bridge and this option is
                 ; set, users will receive events like join, leave, talking,
                 ; etc. via text messages.  For users accessing the bridge
                 ; via chan_pjsip, this means in-dialog MESSAGE messages.
                 ; This is most useful for WebRTC participants where the
                 ; browser application can use the messages to alter the user
                 ; interface.
;echo_events=yes ; If events are enabled for this user and this option is set,
                 ; the user will receive events they trigger, talking, mute, etc.
                 ; If not set, they will not receive their own events.

;marked=yes    ; Sets if this is a marked user or not. Off by default.
;startmuted=yes; Sets if all users should start out muted. Off by default
;music_on_hold_when_empty=yes  ; Sets whether MOH should be played when only
                               ; one person is in the conference or when the
                               ; the user is waiting on a marked user to enter
                               ; the conference. Off by default.
;music_on_hold_class=default   ; The MOH class to use for this user.
;quiet=yes     ; When enabled enter/leave prompts and user intros are not played.
               ; There are some prompts, such as the prompt to enter a PIN number,
               ; that must be played regardless of what this option is set to.
               ; Off by default
;hear_own_join_sound=yes  ; Sets if a user joining the conference should hear the sound_join
                          ; audio sound when they enter the conference. If set to 'no' the
                          ; user will not hear the sound_join audio but the other participants
                          ; in the conference will still hear the audio. If set to 'yes'
                          ; everyone hears the sound_join audio when this user enters the conference.
                          ; On by default
;announce_user_count=yes  ; Sets if the number of users should be announced to the
                          ; caller.  Off by default.
;announce_user_count_all=yes ; Sets if the number of users should be announced to
                             ; all the other users in the conference when someone joins.
                             ; This option can be either set to 'yes' or a number.
                             ; When set to a number, the announcement will only occur
                             ; once the user count is above the specified number.
;announce_only_user=yes   ; Sets if the only user announcement should be played
                          ; when a channel enters a empty conference.  On by default.
;wait_marked=yes   ; Sets if the user must wait for a marked user to enter before
                   ; joining the conference. Off by default.
;end_marked=yes ; This option will kick every non-marked user with this option set in their
                ; user profile after the last marked user exits the conference.
;end_marked_any=no ; This option will kick every user with this option set in
                   ; their user profile after any marked user exits the conference.
                   ; Additionally, note that unlike end_marked, this includes marked users.

;dsp_drop_silence=yes  ; This option 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. Highly recommended for large conferences
                       ; due to its performance enhancements.

;dsp_talking_threshold=128  ; Average magnitude threshold to determine talking.
                            ;
                            ; The minimum average magnitude per sample in a frame for the
                            ; DSP to consider talking/noise present.  A value below this
                            ; level is considered silence.  This value affects several
                            ; operations and should not be changed unless the impact on
                            ; call quality is fully understood.
                            ;
                            ; What this value affects internally:
                            ;
                            ; 1. Audio is only mixed out of a user's incoming audio
                            ;    stream if talking is detected.  If this value is set too
                            ;    high the user will hear himself talking.
                            ;
                            ; 2. When talk detection AMI events are enabled, this value
                            ;    determines when talking has begun which results in an
                            ;    AMI event to fire.  If this value is set too low AMI
                            ;    events may be falsely triggered by variants in room
                            ;    noise.
                            ;
                            ; 3. 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
                            ;    high the user's speech will get discarded as they will
                            ;    be considered silent.
                            ;
                            ; Valid values are 1 through 2^15.
                            ; By default this value is 160.

;dsp_silence_threshold=2000 ; The number of milliseconds of silence necessary to declare
                            ; talking stopped.
                            ;
                            ; The time in milliseconds of sound falling below the
                            ; 'dsp_talking_threshold' option when a user is considered to
                            ; stop talking.  This value affects several operations and
                            ; should not be changed unless the impact on call quality is
                            ; fully understood.
                            ;
                            ; What this value affects internally:
                            ;
                            ; 1. When talk 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 the user has stopped talking may get
                            ;    falsely sent out when the user briefly pauses during mid
                            ;    sentence.
                            ;
                            ; 2. The 'drop_silence' option depends on this value to
                            ;    determine when the user's audio should begin to be
                            ;    dropped from the conference bridge after the user stops
                            ;    talking.  If this value is set too low the user's audio
                            ;    stream may sound choppy to the other participants.  This
                            ;    is caused by the user transitioning constantly from
                            ;    silence to talking during mid sentence.
                            ;
                            ; 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.
                            ;
                            ; Valid values are 1 through 2^31.
                            ; By default this value is 2500ms.

;talk_detection_events=yes ; This option sets whether or not notifications of when a user
                           ; begins and ends talking should be sent out as events over AMI.
                           ; By default this option is off.

;denoise=yes ; Sets whether or not a denoise filter should be applied
             ; to the audio before mixing or not.  Off by default. Requires
             ; func_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 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.

;jitterbuffer=yes  ; Enabling this option places a jitterbuffer on the user's audio stream
                   ; before audio mixing is performed.  This is highly recommended but will
                   ; add a slight delay to the audio.  This option is using the JITTERBUFFER
                   ; dialplan function's default adaptive jitterbuffer.  For a more fine tuned
                   ; jitterbuffer, disable this option and use the JITTERBUFFER dialplan function
                   ; on the user before entering the ConfBridge application.

;pin=1234  ; Sets if this user must enter a PIN number before entering
           ; the conference.  The PIN will be prompted for.
;announce_join_leave=yes ; When enabled, this option will prompt the user for a
                         ; name when entering the conference.  After the name is
                         ; recorded, it will be played as the user enters and exists
                         ; the conference. This option is off by default.
;announce_join_leave_review=yes ; When enabled, implies announce_join_leave, but the user
                                ; will be prompted to review their recording before
                                ; entering the conference. During this phase, the recording
                                ; may be listened to, re-recorded, or accepted as is. This
                                ; option is off by default.
;dtmf_passthrough=yes  ; Sets whether or not DTMF should pass through the conference.
                       ; This option is off by default.
;announcement=</path/to/file> ; Play a sound file to the user when they join the conference.

;timeout=3600 ; When set non-zero, this specifies the number of seconds that the participant
              ; may stay in the conference before being automatically ejected. When the user
              ; is ejected from the conference, the user's channel will have the CONFBRIDGE_RESULT
              ; variable set to "TIMEOUT". A value of 0 indicates that there is no timeout.
              ; Default: 0
;text_messaging=yes ; When set to yes text messages will be sent to this user. Text messages
                    ; may occur as a result of events or can be received from other participants.
                    ; When set to no text messages will not be sent to this user.
;answer_channel=yes   ; Sets if the channel should be answered if it hasn't been already.
                          ; On by default.

; --- ConfBridge Bridge Profile Options ---
[default_bridge]
type=bridge
;max_members=50                ; This option 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.  Note however
                               ; that an Admin user will always be alowed to join the conference
                               ; regardless if this limit is reached or not.

;record_conference=yes         ; 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-<name of conference bridge>-<start time>.wav
                               ; and the default format is 8khz slinear.  This file will be
                               ; located in the configured monitoring directory in asterisk.conf.

;record_file=</path/to/file>   ; When record_conference is set to yes, the specific name of the
                               ; record file can be set using this option.  Note that since multiple
                               ; conferences may use the same bridge profile, this may cause issues
                               ; depending on the configuration.  It is recommended to only use this
                               ; option dynamically with the CONFBRIDGE() dialplan function. This
                               ; allows the record name to be specified and a unique name to be chosen.
                               ; By default, the record_file is stored in Asterisk's spool/monitor directory
                               ; with a unique filename starting with the 'confbridge' prefix.

;record_file_append=yes        ; Append record file when starting/stopping on same conference recording.
;record_file_timestamp=yes     ; Append the start time to the record file name.

;record_options=               ; Pass additional options to MixMonitor.
;record_command=</path/to/command> ; Command to execute when recording finishes.

;internal_sample_rate=auto     ; Sets the internal native sample rate the
                               ; conference is mixed at.  This is set to automatically
                               ; adjust the sample rate to the best quality by default.
                               ; Other values can be anything from 8000-192000.  If a
                               ; sample rate is set that Asterisk does not support, the
                               ; closest sample rate Asterisk does support to the one requested
                               ; will be used.

;maximum_sample_rate=none      ; Sets the maximum sample rate the conference
                               ; is mixed at. This is set to no maximum by default.
                               ; Values can be anything from 8000-192000.

;mixing_interval=40     ; Sets the internal mixing interval in milliseconds for the bridge.  This
                        ; number reflects how tight or loose the mixing will be for the conference.
                        ; In order to improve performance a larger mixing interval such as 40ms may
                        ; be chosen.  Using a larger mixing interval comes at the cost of introducing
                        ; larger amounts of delay into the bridge.  Valid values here are 10, 20, 40,
                        ; or 80.  By default 20ms is used.

;video_mode = follow_talker; Sets how confbridge handles video distribution to the conference participants.
                           ; Note that participants wanting to view and be the source of a video feed
                           ; _MUST_ be sharing the same video codec.  Also, using video in conjunction with
                           ; with the jitterbuffer currently results in the audio being slightly out of sync
                           ; with the video.  This is a result of the jitterbuffer only working on the audio
                           ; stream.  It is recommended to disable the jitterbuffer when video is used.
                           ;
                           ; --- MODES ---
                           ; none: No video sources are set by default in the conference. It is still
                           ;       possible for a user to be set as a video source via AMI or DTMF action
                           ;       at any time.
                           ;
                           ; follow_talker: The video feed will follow whoever is talking and providing video.
                           ;
                           ; last_marked: The last marked user to join the conference with video capabilities
                           ;              will be the single source of video distributed to all participants.
                           ;              If multiple marked users are capable of video, the last one to join
                           ;              is always the source, when that user leaves it goes to the one who
                           ;              joined before them.
                           ;
                           ; first_marked: The first marked user to join the conference with video capabilities
                           ;               is the single source of video distribution among all participants. If
                           ;               that user leaves, the marked user to join after them becomes the source.
                           ;
                           ; sfu: Selective Forwarding Unit - Sets multi-stream operation
                           ;      for a multi-party video conference.

;language=en               ; Set the language used for announcements to the conference.
                           ; Default is en (English).

;regcontext=conferences    ; The name of the context into which to register conference names as extensions.
;video_update_discard=2000 ; Amount of time (in milliseconds) to discard video update requests after sending a video
                           ; update request. Default is 2000. A video update request is a request for a full video
                           ; intra-frame. Clients can request this if they require a full frame in order to decode
                           ; the video stream. Since a full frame can be large limiting how often they occur can
                           ; reduce bandwidth usage at the cost of increasing how long it may take a newly joined
                           ; channel to receive the video stream.
;remb_send_interval=1000   ; Interval (in milliseconds) at which a combined REMB frame will be sent to sources of video.
                           ; A REMB frame contains receiver estimated maximum bitrate information. By creating a combined
                           ; frame and sending it to the sources of video the sender can be influenced on what bitrate
                           ; they choose allowing a better experience for the receivers. This defaults to 0, or disabled.
;remb_behavior=average     ; How the combined REMB report for an SFU video bridge is constructed. If set to "average" then
                           ; the estimated maximum bitrate of each receiver is used to construct an average bitrate. If
                           ; set to "lowest" the lowest maximum bitrate is forwarded to the sender. If set to "highest"
                           ; the highest maximum bitrate is forwarded to the sender. If set to "average_all" a single average
                           ; is generated from every receiver and the same value is sent to every sender. If set to
                           ; "lowest_all" the lowest maximum bitrate of all receivers is sent to every sender. If set to
                           ; "highest_all" the highest maximum bitrate of all receivers is sent to every sender.
                           ; When set to "force", the value set in remb_estimated_bitrate is sent to every sender.
                           ; This defaults to "average".
;remb_estimated_bitrate=0  ; When remb_behavior is set to 'force', this options sets the estimated bitrate
                           ; (in bits per second) sent to each participant in REMB reports.

;enable_events=no          ; If enabled, recipients who joined the bridge via a channel driver
                           ; that supports Enhanced Messaging (currently only chan_pjsip) will
                           ; receive in-dialog messages containing a JSON body describing the
                           ; event.  The Content-Type header will be
                           ; "text/x-ast-confbridge-event".
                           ; This feature must also be enabled in user profiles.

; 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
; sound file found in the sounds directory when announcing someone's name is joining the
; conference.

;sound_join  ; The sound played to everyone when someone enters the conference.
;sound_leave ; The sound played to everyone when someone leaves the conference.
;sound_has_joined ; The sound played before announcing someone's name has
                  ; joined the conference. This is used for user intros.
                  ; Example "_____ has joined the conference"
;sound_has_left ; The sound played when announcing someone's name has
                ; left the conference. This is used for user intros.
                ; Example "_____ has left the conference"
;sound_kicked ; The sound played to a user who has been kicked from the conference.
;sound_muted  ; The sound played when the mute option is toggled on using DTMF menu.
;sound_unmuted  ; The sound played when the mute option is toggled off using DTMF menu.
;sound_only_person ; The sound played when the user is the only person in the conference.
;sound_only_one ; The sound played to a user when there is only one other
                ; person is in the conference.
;sound_there_are  ; The sound played when announcing how many users there
                  ; are in a conference.
;sound_other_in_party; ; This file is used in conjunction with 'sound_there_are"
                       ; when announcing how many users there are in the conference.
                       ; The sounds are stringed together like this.
                       ; "sound_there_are" <number of participants> "sound_other_in_party"
;sound_place_into_conference ; The sound played when someone is placed into the conference
                             ; after waiting for a marked user. This sound is now deprecated
                             ; since it was only ever used improperly and correcting that bug
                             ; made it completely unused.
;sound_wait_for_leader  ; The sound played when a user is placed into a conference that
                        ; can not start until a marked user enters.
;sound_leader_has_left  ; The sound played when the last marked user leaves the conference.
;sound_get_pin ; The sound played when prompting for a conference pin number.
;sound_invalid_pin ; The sound played when an invalid pin is entered too many times.
;sound_locked ; The sound played to a user trying to join a locked conference.
;sound_locked_now ; The sound played to an admin after toggling the conference to locked mode.
;sound_unlocked_now; The sound played to an admin after toggling the conference to unlocked mode.
;sound_error_menu ; The sound played when an invalid menu option is entered.
;sound_begin ; The sound played to the conference when the first marked user enters the conference.
;sound_binaural_on ; The sound played when binaural audio is turned on
;sound_binaural_off ; The sound played when binaural audio is turned off

; --- ConfBridge Menu Options ---
; The ConfBridge application also has the ability to
; apply custom DTMF menus to each channel using the
; application.  Like the User and Bridge profiles
; a menu is passed in to ConfBridge as an argument in
; the dialplan.
;
; Below is a list of menu actions that can be assigned
; to a DTMF sequence.
;
; To have the first DTMF digit in a sequence be the '#' character, you need to
; escape it.  If it is not escaped then normal config file processing will
; think it is a directive like #include.  For example:
; \#1=toggle_mute                      ; Pressing #1 will toggle the mute setting.
;
; A single DTMF sequence can have multiple actions associated with it. This is
; accomplished by stringing the actions together and using a ',' as the delimiter.
; Example:  Both listening and talking volume is reset when '5' is pressed.
; 5=reset_talking_volume, reset_listening_volume
;
; playback(<name of audio file>&<name of audio file>)
                                       ; Playback will play back an audio file to a channel
                                       ; and then immediately return to the conference.
                                       ; This file can not be interupted by DTMF.
                                       ; Mutliple files can be chained together using the
                                       ; '&' character.
; playback_and_continue(<name of playback prompt>&<name of playback prompt>)
                                       ; playback_and_continue will
                                       ; play back a prompt while continuing to
                                       ; collect the dtmf sequence.  This is useful
                                       ; when using a menu prompt that describes all
                                       ; the menu options.  Note however that any DTMF
                                       ; during this action will terminate the prompts
                                       ; playback.  Prompt files can be chained together
                                       ; using the '&' character as a delimiter.
; toggle_mute      ; Toggle turning on and off mute.  Mute will make the user silent
                   ; to everyone else, but the user will still be able to listen in.
; toggle_binaural  ; Toggle on or off binaural audio processing.

; no_op ; This action does nothing (No Operation). Its only real purpose exists for
        ; being able to reserve a sequence in the config as a menu exit sequence.
; decrease_listening_volume ; Decreases the channel's listening volume.
; increase_listening_volume ; Increases the channel's listening volume.
; reset_listening_volume    ; Reset channel's listening volume to default level.

; decrease_talking_volume ; Decreases the channel's talking volume.
; increase_talking_volume ; Icreases the channel's talking volume.
; reset_talking_volume    ; Reset channel's talking volume to default level.
;
; dialplan_exec(context,exten,priority)  ; The dialplan_exec action allows a user
                                         ; to escape from the conference and execute
                                         ; commands in the dialplan.  Once the dialplan
                                         ; exits the user will be put back into the
                                         ; conference.  The possibilities are endless!
; leave_conference ; This action allows a user to exit the conference and continue
                   ; execution in the dialplan.
;
; admin_kick_last  ; This action allows an Admin to kick the last participant from the
                   ; conference. This action will only work for admins which allows
                   ; a single menu to be used for both users and admins.
;
; admin_toggle_conference_lock ; This action allows an Admin to toggle locking and
                               ; unlocking the conference.  Non admins can not use
                               ; this action even if it is in their menu.

; set_as_single_video_src   ; This action allows any user to set themselves as the
                            ; single video source distributed to all participants.
                            ; This will make the video feed stick to them regardless
                            ; of what the video_mode is set to.

; release_as_single_video_src ; This action allows a user to release themselves as
                              ; the video source.  If video_mode is not set to "none"
                              ; this action will result in the conference returning to
                              ; whatever video mode the bridge profile is using.
                              ;
                              ; Note that this action will have no effect if the user
                              ; is not currently the video source.  Also, the user is
                              ; not guaranteed by using this action that they will not
                              ; become the video source again.  The bridge will return
                              ; to whatever operation the video_mode option is set to
                              ; upon release of the video src.

; admin_toggle_mute_participants ; This action allows an administrator to toggle the mute
                                 ; state for all non-admins within a conference.
                                 ; Subsequent non-admins joining a muted conference will
                                 ; start muted.  All admin users are unaffected by this
                                 ; option.  Note that all users, regardless of their admin
                                 ; status, are notified that the conference is muted when
                                 ; the state is toggled.

; participant_count        ; This action plays back the number of participants currently
                           ; in a conference

[sample_user_menu]
type=menu
*=playback_and_continue(conf-usermenu)
*1=toggle_mute
1=toggle_mute
*4=decrease_listening_volume
4=decrease_listening_volume
*6=increase_listening_volume
6=increase_listening_volume
*7=decrease_talking_volume
7=decrease_talking_volume
*8=leave_conference
8=leave_conference
*9=increase_talking_volume
9=increase_talking_volume

[sample_admin_menu]
type=menu
*=playback_and_continue(conf-adminmenu)
*1=toggle_mute
1=toggle_mute
*2=admin_toggle_conference_lock ; only applied to admin users
2=admin_toggle_conference_lock  ; only applied to admin users
*3=admin_kick_last       ; only applied to admin users
3=admin_kick_last        ; only applied to admin users
*4=decrease_listening_volume
4=decrease_listening_volume
*6=increase_listening_volume
6=increase_listening_volume
*7=decrease_talking_volume
7=decrease_talking_volume
*8=no_op
8=no_op
*9=increase_talking_volume
9=increase_talking_volume
