In this guide, we are going to teach you how to convert your asterisk MeetMe dialplan into Confbridge. I have had clients request this on several occasions, and have needed to do it for myself at times, so I figured I would post this guide to help anyone else who needs to go through the same thing. It could also be called a “ConfBridge Cheat Sheet” or a “MeetMe Cheat Sheet”.
Table of Contents
- Overview
- Create Conference
- Join Conference
- Count Participants
- Record Conference
- Set RecordFileName
- Menus (coming soon…)
Overview
So why would anyone want to use Confbridge instead of MeetMe? In Asterisk, there are 2 major conference modules, app_meetme and app_confbridge. app_meetme is the older of the two, and it has a few advantages, mainly that it’s simple and been around for a while so there’s plenty of examples on the internet that use it. However, it is dependent on the dahdi kernel module, which means every time you update your kernel, you have to recompile dahdi as well. Also, it’s less flexible than confbridge.
So let’s get to it, we won’t cover every edge case or possible use, however we will try to cover as much as is reasonable.
Creating a new Conference:
MeetMe:
[macro-newmeetme]
exten => s,1,Set(__CNUM=${RAND(50000,99999)}) ;TIP keep the range away from your extensions so you can use it as an extension
same => 2,Set(__CNUM=$[${CNUM}+1])
same => 3,MeetMeCount(${CNUM},count)
same => n,GotoIf($[${count}>0]?2) ;Check to see if this conference exists (already has people)
same => n,MeetMe(${CNUM}) ;be sure to set relevant options you want
Confbridge:
[macro-newconfbridge]
exten => s,1,Set(__CNUM=${RAND(50000,99999)})
same => 2,Set(__CNUM=$[${CNUM}+1])
same => 3,GotoIf($[${GROUP_COUNT(${CNUM}@conference)}>0]?2)
same => n,Set(GROUP(conference)=${CNUM}) ;use groups to keep track of member counts
same => n,ConfBridge(${CNUM}) ;note this will use the default bridge defined in confbridge.conf
Join a conference:
[join-meetme]
exten => _XXXXX,1,MeetMe(${EXTEN}) ;extension is the conference number
[join-confbridge]
exten => _XXXXX,1,Set(GROUP(conference)=${EXTEN}) ;extension is the conference number
same => n,ConfBridge(${EXTEN})
Get number of agents in a conference:
We already showed you this, but we’ll keep it here also for reference.
MeetMe:
same => n,MeetMeCount(${CNUM},count) ;creates
same => n,NoOp(There are ${count} members in conference ${CNUM})
Confbridge:
same => n,NoOp(There are ${GROUP_COUNT(${CNUM}@conference)} members in conference: ${CNUM})
Record the conference:
MeetMe
On the MeetMe line, add the “r” flag to the options:
same => n,MeetMe(${CNUM,r)
ConfBridge
Set the bridge option, “record_conference” equal to “yes”:
same => n,Set(CONFBRIDGE(bridge,record_conference)=yes)
Setting the recording filename:
Default directory is ${ASTSPOOLDIR} defined in asterisk.conf, however MeetMe could also be ${ASTSPOOLDIR}/meetme.
You can also specify an absolute path
MeetMe:
same => n,Set(MEETME_RECORDINGFILE=meetme-${CNUM}.wav) ;you can also specify an absolute path
same => n,MeetMe(${CNUM},r) ;r flag records the conference
Confbridge:
same => n,Set(CONFBRIDGE(bridge,record_file)=confbridge-${CNUM}.wav)
same => n,Set(CONFBRIDGE(bridge,record_conference)=yes)
That’s all the time we have for now, if this helped you, please +1 it with Google, you can also bookmark us to checkback later. I will be adding more information soon, most importantly, setting up the confbridge.conf file, creating menus, and working with more of the options.
Can You please guide me how is it possible to barge in confbridg
Barging is done with a separate App in Asterisk, ChanSpy. Please see my article: Adding Listen, Whisper, and Barge to FreePBX or Asterisk. http://hackrr.com/2013/freepbx/adding-listen-whisper-and-barge-to-freepbx-or-asterisk/
There is a much easier way to dynamically create or join a conference with MeetMe(), requiring a single number and a single dialplan line.
; Dial 999 to dynamically create or join a conference :
; c – Announce user(s) count on joining a conference
; I – Announce user join/leave without review
; x – Leave the conference when the last marked user leaves
; d – Dynamically add conference
; s – Present menu (user or admin) when * is received (send to menu)
; M( class ) – Enable music on hold when the conference has a single caller
exten => 999,1,MeetMe(,cIxdsM)
; Alternatively, if you prefer PIN-protected conferences :
; D – Dynamically add conference, prompting for a PIN
exten => 999,1,MeetMe(,cIxDsM)
Currently looking to get something as smooth with ConfBridge