– Kamailio SIP Server –

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

Unfortunately, it is pretty hard to determine what is happening with this project. More information about app_cbmysql and the web-meetme gui can be found here:

http://www.voip-info.org/wiki/view/MeetMe-Web-Control

Mike Williams
mikebwilliams@gmail.com