app_confbridge: Enable sending events to participants

ConfBridge can now send events to participants via in-dialog MESSAGEs.
All current Confbridge events are supported, such as ConfbridgeJoin,
ConfbridgeLeave, etc.  In addition to those events, a new event
ConfbridgeWelcome has been added that will send a list of all
current participants to a new participant.

For all but the ConfbridgeWelcome event, the JSON message contains
information about the bridge, such as its id and name, and information
about the channel that triggered the event such as channel name,
callerid info, mute status, and the MSID labels for their audio and
video tracks. You can use the labels to correlate callerid and mute
status to specific video elements in a webrtc client.

To control this behavior, the following options have been added to
confbridge.conf:

bridge_profile/enable_events:  This must be enabled on any bridge where
events are desired.

user_profile/send_events:  This must be set for a user profile to send
events.  Different user profiles connected to the same bridge can have
different settings.  This allows admins to get events but not normal
users for instance.

user_profile/echo_events:  In some cases, you might not want the user
triggering the event to get the event sent back to them.  To prevent it,
set this to false.

A change was also made to res_pjsip_sdp_rtp to save the generated msid
to the stream so it can be re-used.  This allows participant A's video
stream to appear as the same label to all other participants.

Change-Id: I26420aa9f101f0b2387dc9e2fd10733197f1318e
This commit is contained in:
George Joseph
2018-05-31 15:22:13 -06:00
parent a6a22debf1
commit e7a7506f9c
7 changed files with 485 additions and 28 deletions

View File

@@ -18,6 +18,18 @@
[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
@@ -244,6 +256,13 @@ type=bridge
; 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. This defaults to "average".
;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