Что нам стоит “Asterisk realtime” построить!
Настройка Asterisk с использованием текстовых конфигурационных файлов приемлема на начальных этапах эксплуатации, но ещё более удобна настройка с использованием какой либо распространённой базы данных. В данной публикации будет рассмотрена работа с использованием архитектуры реального времени “Asterisk Realtime Architecture” или просто realtime.
Realtime существует в двух типах - статическом и динамическом. Статический тип похож на метод чтения из конфигурационного файла, только в данном случае все значения конфигурационного файла у нас находятся в базе данных. Чтобы заполучить изменённую конфигурацию при статическом типе realtime требуется перезагрузить модули командой “module reload” из консоли сервера Asterisk. Динамический же тип realtime, напротив, получает требуемую конфигурацию сразу по мере необходимости без какой либо перезагрузки модулей.
В интернете находится разрозненная информация о том как настроить realtime применительно к ранним версиям Asterisk. В открывающемся цикле статей я буду обобщать свой опыт настройки Asterisk realtime. Будет рассмотрено использование архитектуры реального времени на примере LTS версии Asterisk 1.8 с использованием дистрибутива CentOS 5.x при подключении к MySQL базе данных.
Настройка сервера Asterisk
Конфигурация Asterisk realtime находится в трёх файлах - extconfig.conf, res_config_mysql.conf и cdr_mysql.conf.
extconfig.conf отвечает за realtime конфигурацию iaxusers, iaxpeers, sippeers, sipregs, voicemail, extensions, meetme, queues, queue_members, musiconhold, queue_log и ряда файлов со статическим типом конфигурации. Все эти записи закрыты комментариями, мы будем убирать комментарии по ходу настройки и создания соответствующих таблиц в базе данных MySQL.
Надо заметить что изменился формат записей по отношению к предыдущим версиям Asterisk. Если в ранних версиях для настройки realtime формат записи был: “<family name> => <driver>,<database name> [,table_name]”, то теперь он стал “<family name> => <context> [,table_name]” . Как мы видим перечисления “driver” и “database name” представлены как отдельный “context”. Описание контекста находится в файле “res_config_mysql.conf”, при конфигурации по умолчанию контекстом у нас является “general”. Необязательное значение “[table_name]” не указывается в случае если “<family name>” совпадает с именем таблицы создаваемой в базе MySQL.
[general] ;dbhost = 127.0.0.1 ;dbname = asterisk ;dbuser = myuser ;dbpass = mypass ;dbport = 3306 ;dbsock = /tmp/mysql.sock ;dbcharset = latin1 ;requirements=warn ; or createclose or createcharТребуется снять комментарии со всех вышеприведённых строчек, за исключением “dbsock = /tmp/mysql.sock” и изменить значения записей dbuser, dbpass и dbcharset на те значения что использовали при создании базы данных.
CREATE DATABASE asteriskdb; GRANT ALL PRIVILEGES ON asteriskdb.* TO 'asterisk'@'localhost' IDENTIFIED BY 'mypass' WITH GRANT OPTION; flush privileges;
module reload realtime mysql status
general connected to asteriskdb@127.0.0.1, port 3306 with username asterisk for 1 days, 1 hours.
;[global] ;hostname=database.host.name ;dbname=asteriskcdrdb ;table=cdr ;password=password ;user=asteriskcdruser ;port=3306 ;sock=/tmp/mysql.sock ;timezone=UTC ; Previously called usegmtimeТеперь, так же как и ранее в файле res_config_mysql.conf нам требуется снять комментарии со всех вышеприведённых строчек, за исключением “sock = /tmp/mysql.sock” и изменить значения записей hostname, dbname, password и user на те значения что использовали при создании базы данных.
cdr mysql status
Connected to asteriskdb@127.0.0.1, port 3306 using table cdr for 1 hours, 22 minutes, 39 seconds.”
Подготовка MySQL таблиц
Asterisk musiconhold realtime
CREATE TABLE musiconhold ( name char(80) not null primary key, mode char(80) null, directory char(255) null, application char(255) null, digit char(1) null, sort char(10) null, format char(10) null, stamp timestamp ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Рассмотрим по порядку назначение каждого поля. Те значения которые указаны в конфигурационном файле musiconhold.conf будем указывать как значения по умолчанию.
Прекрасная статья! Большое вам спасибо, буду использовать как инструкцию, добавлю в закладки и буду ждать продолжения!
ОтветитьУдалить