Table of Contents
Using Asterisk as a Conference Bridge
Using Asterisk as a conference bridge is much simpler than using it as a voicemail system because it does not require you to integrate OpenSER and Asterisk's database tables. No views, no trickery, and no editing the source code.
Programs Needed
- Latest Asterisk
- app_cbmysql for Asterisk
- Web MeetMe
- Tables for CbMysql
How This Will Work
In OpenSER, add an account for asterisk. Then, set Asterisk up to register to that account. There won't need to be any route modifications because Asterisk will just be another number for users to call. Unfortunately, most of what I found online seemed to be multiple pieces that I just happened to put together.
Configuration
Be sure to fill in all username, password, and other settings with your details.
Asterisk's sip.conf
[general] context=conference ; Default context for incoming calls bindport=5060 ; UDP Port to bind to (SIP standard port is 5060) bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all) srvlookup=yes tos=184 ; Set IP QoS to either a keyword or numeric val disallow=all allow=ulaw ; Allow codecs in order of preference language=en ; Default language setting for all users/peers relaxdtmf=yes ; Relax dtmf handling rtptimeout=60 ; Terminate call if 60 seconds of no RTP activity useragent=VoIP Conference Bridge dtmfmode = auto ; Set default dtmfmode for sending DTMF. Default: rfc2833 register => username:password@sip.domain/username; domain=sip.domain,conference fromdomain=sip.domain [authentication] auth = username:password@sip.domain [sipproxy] type=friend user=phone host=sip.domain realm=sip.domain fromdomain=sip.domain fromuser=username secret=password insecure=very context=conference authname=username dtmfmode=RFC2833 canreinvite=no username=username disallow=all allow=ulaw
Asterisk's extensions.conf
[mm-announce] exten => 9999,1,Set(CALLERID(name)="MMGETOUT") exten => 9999,n,Answer exten => 9999,n,Playback(conf-will-end-in) exten => 9999,n,Playback(digits/5) exten => 9999,n,Playback(minutes) exten => 9999,n,Hangup [conference] ;Used by cbEnd script to play end of conference warning exten => _mmplay.,1,Answer exten => _mmplay.,2,MeetMe(${EXTEN:6}|dq) exten => _mmplay.,3,Hangup exten => username,1,Answer exten => username,2,Wait(1) exten => username,3,CBMysql() ; Validates passwords, starttime, etc exten => username,4,Hangup
Asterisk's cbmysql.conf
[global] hostname=your_database_server dbname=meetme_database password=meetme_password user=meetme_user port=3306 sock=/var/run/mysql/mysql.sock DBOpts=yes OptsAdm=asdp OptsUsr=sdp ConfApp=MeetMe ConfAppCount=MeetMeCount ; Choose one of the following to modify early join behaviour earlyalert=300 ; Tell the participant if they are too early (seconds) ;fuzzystart= ; Allow participants to join early (seconds)
Database Tables
Here is an output of what I found online:
mysql> show columns from booking; +-----------+-------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------------------+----------------+ | bookId | int(11) | | PRI | NULL | auto_increment | | clientId | int(11) | | | 0 | | | roomNo | varchar(30) | | | 0 | | | roomPass | varchar(30) | | | 0 | | | silPass | varchar(30) | | | 0 | | | startTime | datetime | | | 0000-00-00 00:00:00 | | | endTime | datetime | YES | | 0000-00-00 00:00:00 | | | dateReq | datetime | | | 0000-00-00 00:00:00 | | | dateMod | datetime | | | 0000-00-00 00:00:00 | | | maxUser | varchar(30) | | | 10 | | | status | varchar(30) | | | A | | | confOwner | varchar(30) | | | | | | confDesc | varchar(30) | | | | | | aFlags | varchar(10) | | | | | | uFlags | varchar(10) | | | | | +-----------+-------------+------+-----+---------------------+----------------+ 13 rows in set (0.00 sec) mysql> show columns from cdr; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | bookId | varchar(16) | | | | | | duration | varchar(12) | | | | | | CIDnum | varchar(32) | YES | | NULL | | | CIDname | varchar(32) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
I have posted this here because I fear that it will be removed. Here is the original link: http://www.fitawi.com/Asterisk/db-tables-v4.txt
This is a work in progress, will be completed more in the next few days.
Mike Williams mikebwilliams@gmail.com