We want to switch from meetme to confbridge.
With meetme, the end of the conference when the last user leaves the conference works with the option ‘x’ (x - Leave the conference when the last marked user leaves.)
For confbridge we use for marked=yes and end_marked=yes.
Here is my confbridge.conf:
[default_bridge]
type=bridge
;
[admin_user]
type=user
admin=yes
marked=yes
music_on_hold_when_empty=yes
dsp_drop_silence=yes
end_marked=yes
;
[default_user]
type=user
marked=yes
music_on_hold_when_empty=yes
announce_user_count=yes
announce_join_leave=yes
end_marked=yes
dsp_drop_silence=yes
This is the dialplan logic for creating and participating:
[join_conference]
exten => s,1,Read(CONFERENCENUM,conf-getconfno,3,5)
; Check if the conference doesn’t exist, if so, go to statement 10
same => n,GotoIf([{GROUP_COUNT({CONFERENCENUM}@conference)} == 0] ? 10)
; Dump the user into the conference
same => n,ConfBridge({CONFERENCENUM},default_bridge,default_user)
; Tell the user they entered an invalid number and take them back to the top to try again
same => 10,Playback(conf-invalid)
same => 11,Goto(1)
same => n(return),Return()
[create_conference]
exten => s,1,Wait(1)
same => n,Read(__CONFERENCENUM,conf-getconfno,3,5)
; If it already exists, jump back and increment it again
same => n,GotoIf([{GROUP_COUNT({CONFERENCENUM}@conference)} > 0] ? 1)
; Mark it as existing.
; For the observant, yes there's a race condition here, but the number of concurrent conferences will probably be low
same => n,Set(GROUP(conference)={CONFERENCENUM})
; Tell the user which conference this is
; same => n,Playback(conf-youareinconfnum)
; same => n,SayDigits({CONFERENCENUM})
; Create the conference using the default Bridge Profile and default User Profile
same => n,ConfBridge({CONFERENCENUM},default_bridge,admin_user)
same => n(return),Return()
Unfortunately, the conference is not ended after the last participant - i.e. not the admin - has hung up.