Создание базы данных
заходим в базу данных mysql
mysql -u root -p
создаем базу данных с именем 'asteriskrealtime'
create database if not exists `asteriskrealtime`;
изменяем базу данных asteriskrealtime :
use asteriskrealtime;
создадим таблицу sip_buddies в которой будем хранить записи наших пользователей:
CREATE TABLE `sip_buddies` ( `id` int(11) NOT NULL auto_increment, `name` varchar(80) NOT NULL, `callerid` varchar(80) default NULL, `defaultuser` varchar(80) NOT NULL, `regexten` varchar(80) NOT NULL, `secret` varchar(80) default NULL, `accountcode` varchar(20) default NULL, `context` varchar(80) default NULL, `amaflags` varchar(7) default NULL, `callgroup` varchar(10) default NULL, `canreinvite` char(3) default 'yes', `defaultip` varchar(15) default NULL, `dtmfmode` varchar(7) default NULL, `fromuser` varchar(80) default NULL, `fromdomain` varchar(80) default NULL, `fullcontact` varchar(80) default NULL, `host` varchar(31) NOT NULL, `insecure` varchar(4) default NULL, `language` char(2) default NULL, `mailbox` varchar(50) default NULL, `md5secret` varchar(80) default NULL, `nat` varchar(5) NOT NULL default 'no', `deny` varchar(95) default NULL, `permit` varchar(95) default NULL, `mask` varchar(95) default NULL, `pickupgroup` varchar(10) default NULL, `port` varchar(5) NOT NULL, `qualify` char(3) default NULL, `restrictcid` char(1) default NULL, `rtptimeout` char(3) default NULL, `rtpholdtimeout` char(3) default NULL, `type` varchar(6) NOT NULL default 'friend', `disallow` varchar(100) default 'all', `allow` varchar(100) default 'g729;ilbc;gsm;ulaw;alaw', `musiconhold` varchar(100) default NULL, `regseconds` int(11) NOT NULL default '0', `ipaddr` varchar(15) NOT NULL, `cancallforward` char(3) default 'yes', `lastms` int(11) NOT NULL, `useragent` char(255) default NULL, `regserver` varchar(100) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `name_2` (`name`) ) ENGINE=MyISAM AUTO_INCREMENT=890 DEFAULT CHARSET=latin1;
Перейдем к конфигурированию asterisk
создадим в файле /etc/asterisk/res_mysql.conf следующую запись:
[general] dbhost = 127.0.0.1 dbname = asteriskrealtime dbuser = root dbpass = password dbport = 3306
в файле extconfig.conf, создадим запись приведенную ниже:
[settings] sippeers => mysql,general,sip_buddies
проверяем подключился ли asterisk к базе данных mysql
asterisk -r asterisk*CLI> realtime mysql statusдолжно появиться примерно такое сообщение
general connected to asteriskrealtime@127.0.0.1, port 3306 with username root for 2 days, 17 hours.
Создание sip пользователей в базе данных
создадим первые два пира в базе данных подключаемся к базе и вводим парольmysql -u root -p
password
use asteriskrealtime;заведем peer с номерами 100, 200 и паролем paSsWoRDmysql в таблицу sip_buddies table:
INSERT INTO asteriskrealtime.sip_buddies ( NAME, defaultuser, secret, context, HOST, nat, qualify, TYPE) VALUES ( '100', '100', 'paSsWoRDmysql', 'from-sip', 'dynamic', 'yes', 'no', 'friend');
INSERT INTO asteriskrealtime.sip_buddies ( NAME, defaultuser, secret, context, HOST, nat, qualify, TYPE) VALUES ( '200', '200', 'paSsWoRDmysql', 'from-sip', 'dynamic', 'yes', 'no', 'friend');
Снова перейдем к конфигурированию asterisk. Создадим контекст "from-sip" открываем /etc/asterisk/extensions.conf
[from-sip]
exten => 100,1,Dial(SIP/100)
exten => 200,1,Dial(SIP/200)
exten => 100,n,Hangup()
exten => 200,n,Hangup()
перезагружаем dialplan
asterisk -r asterisk*CLI> dialplan reload
Настраиваем два пира в X-lite и пробуем совершить звонки
P.S недавно понадобилось подключить еще один asterisk к этой базе данных и при подключении на удаленном астреиске получал ошибку
[2013-06-25 00:28:38] ERROR[2426]: res_config_mysql.c:1598 mysql_reconnect: MySQL RealTime: Failed to connect database server asteriskrealtime on 192.168.1.34 (err 2003). Check debug for more info.
для решения этой проблемы нужно на сервере с установленным mysql в файле /etc/mysql/my.cnf
прописать реальный ip
port = 3306
#skip-networking
bind-address = 127.0.0.1
bind-address = 192.168.1.34
теперь нам нужно будет разрешить каким пользователям и с каких ip адресов можно подключаться к базе mysql
заходим
mysql -pдля подключения локального asterisk
GRANT ALL PRIVILEGES ON asteriskrealtime.sip_buddies TO root@192.168.1.34 IDENTIFIED BY 'password';
для подключения удаленного asterisk
GRANT ALL PRIVILEGES ON asteriskrealtime.sip_buddies TO root@192.168.1.94 IDENTIFIED BY 'password';
так же в /etc/asterisk/res_config_mysql.conf меняем ip c 127.0.0.1 на 192.168.1.34
Спасибо! Отличная статья, но есть пара неточностей.
ОтветитьУдалитьВ этой строке есть ошибка, написано
"создадим в файле /etc/asterisk/res_mysql.conf следующую запись: "
а должно быть
" создадим в файле /etc/asterisk/res_config_mysql.conf следующую запись: "
При том что я делал все по туториалу у меня вот эта ошибка возникала даже с одной локальной базой
[2013-06-25 00:28:38] ERROR[2426]: res_config_mysql.c:1598 mysql_reconnect: MySQL RealTime: Failed to connect database server asteriskrealtime on 192.168.1.34 (err 2003). Check debug for more info.
но решение указанное тут (прописать реальный ай пи) мне помогло. И мне самой интересно почему.