Realtime MeetMe Conferences with MySQL

(28 Sep 2008) Misc. notes in adding the realtime capability to MeetMe conference room management. I won't post software here as conference room management is part of my business (it's not that hard to write your own).

extconfig.conf

1) Add the following line to /etc/asterisk/extconfig.conf

  meetme => mysql,asterisk,rooms

MySQL

1) Create the following table in MySQL's asterisk database

 create database asterisk;
 use asterisk;
 create table rooms (
   confno varchar(80) not null default 0,
   pin varchar(20),
   adminpin varchar(20),
   members int not null default 0,
   primary key (confno)
 );

Many other online examples include the two fields "username" and "domain". These are not needed by Asterisk. They are apparently artifacts from a separate third-party program.

The "create" line (above) can be ignored if the database already exists.

2) Add an entry to the rooms database.

 insert into rooms(confno,pin) values(25,1234)

res_mysql.conf

1) Edit /etc/asterisk/res_mysql.conf so that contains the following:

 [general]
 dbhost = localhost
 dbname = asterisk
 dbuser = myuser
 dbpass = mypass
 dbport = 3306
 dbsock = /var/lib/mysql/mysql.sock

Change dbuser and dbpass to whatever username and password you want. Besure to use them in granting database access permissions in MySQL. Example:

 grant all on asterisk.* to myuser@localhost identified by "mypass";

Be sure that dbsock points to the same file as what's listed in the socket line in /etc/my.cnf. Ubuntu (and probably Debian) users should make sure that dbsock points to the same file as what's listed in /etc/mysql/debian.cnf.

extensions.conf

For testing purposes, add a line to your dialplan which allows you to access the conference room:

 exten => 25,1,MeetMe(25) 

Don't forget to restart the Asterisk service. Then dial 25 (or whatever extension you set up in the above line) and you should hear Allison ask you for the PIN number.

Sources: