Asterisk 1.8 Realtime берем данные из базы Mysql

Дек 21

Asterisk 1.8 Realtime берем данные из базы Mysql
Установка базы данных 

Необходимо установить СУБД mysql

Устанавливаем как клиент так и сервер - mysql-server; mysql-client; также потребуется  libmysqlclient-dev.

При установки  потребует задать пароль  администратору базы

После установки заходим:

mysql -u root -p

Enter password: вводим указанный пароль при установки

Для начала  подготовим нашу базу.

Создаем базу данных asterisk

create database asterisk ;

Создание пользователя  в mysql

Почти дословный перевод.

Дать все права  (что означает * ) в базе ‘asterisk’  пользователю asterisk  с паролем asterisk.

grant all privileges on asterisk.*  to ‘asterisk’@’localhost’ identified by ‘asterisk’ with  grant option;

p.s. если нужно дать все права на все базы вместо имени базы  нужно ставить *. (получиться *.*)

mysql -u asterisk -p -h localhost asterisk

Enter password:

Для более удобного  заполнения  потребуется графический интерфейс phpmyadmin

Установить файлы: phpmyadmin, apache, php5 , mysql(client, server)

Зайти в интерфейс можно набрав в командной строке localhost/phpmyadmin

p.s. При установке потребует пароль администратора базы данных mysql.

Создаем таблицы

sip_conf

[sql]CREATE TABLE sip_conf (
id int(11) NOT NULL auto_increment,
accountcode varchar(20) default NULL,
disallow varchar(100) default ‘all’,
allow varchar(100) default ‘g729;ilbc;gsm;ulaw;alaw’,
allowoverlap enum(‘yes’,’no’) default ‘yes’,
allowsubscribe enum(‘yes’,’no’) default ‘yes’,
allowtransfer varchar(3) default NULL,
amaflags varchar(13) default NULL,
autoframing varchar(3) default NULL,
auth varchar(40) default NULL,
buggymwi enum(‘yes’,’no’) default ‘no’,
callgroup varchar(10) default NULL,
callerid varchar(80) default NULL,
cid_number varchar(40) default NULL,
fullname varchar(40) default NULL,
call-limit int(8) default 0,
callingpres varchar(80) default NULL,
canreinvite char(6) default ‘yes’,
context varchar(80) default NULL,
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,
g726nonstandard enum(‘yes’,’no’) default ‘no’,
host varchar(31) NOT NULL default ”,
insecure varchar(20) default NULL,
ipaddr varchar(15) NOT NULL default ”,
language char(2) default NULL,
lastms varchar(20) default NULL,
mailbox varchar(50) default NULL,
maxcallbitrate int(8) default 384,
mohsuggest varchar(80) default NULL,
md5secret varchar(80) default NULL,
musiconhold varchar(100) default NULL,
name varchar(80) NOT NULL default ”,
nat varchar(5) NOT NULL default ‘no’,
outboundproxy varchar(80) default NULL,
deny varchar(95) default NULL,
permit varchar(95) default NULL,
pickupgroup varchar(10) default NULL,
port varchar(5) NOT NULL default ”,
progressinband enum(‘yes’,’no’,’never’) default ‘no’,
promiscredir enum(‘yes’,’no’) default ‘no’,
qualify char(3) default NULL,
regexten varchar(80) NOT NULL default ”,
regseconds int(11) NOT NULL default ‘0’,
rfc2833compensate enum(‘yes’,’no’) default ‘no’,
rtptimeout char(3) default NULL,
rtpholdtimeout char(3) default NULL,
secret varchar(80) default NULL,
sendrpid enum(‘yes’,’no’) default ‘yes’,
setvar varchar(100) NOT NULL default ”,
subscribecontext varchar(80) default NULL,
subscribemwi varchar(3) default NULL,
t38pt_udptl enum(‘yes’,’no’) default ‘no’,
trustrpid enum(‘yes’,’no’) default ‘no’,
type varchar(6) NOT NULL default ‘friend’,
useclientcode enum(‘yes’,’no’) default ‘no’,
username varchar(80) NOT NULL default ”,
usereqphone varchar(3) NOT NULL default ‘no’,
videosupport enum(‘yes’,’no’) default ‘yes’,
vmexten varchar(80) default NULL,
PRIMARY KEY (id),
UNIQUE KEY name (name),
KEY name_2 (name)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;[/sql]

cdr

[sql]CREATE TABLE cdr (
calldate datetime NOT NULL default ‘0000-00-00 00:00:00′,
clid varchar(80) NOT NULL default ”,
src varchar(80) NOT NULL default ”,
dst varchar(80) NOT NULL default ”,
dcontext varchar(80) NOT NULL default ”,
channel varchar(80) NOT NULL default ”,
dstchannel varchar(80) NOT NULL default ”,
lastapp varchar(80) NOT NULL default ”,
lastdata varchar(80) NOT NULL default ”,
duration int(11) NOT NULL default ‘0’,
billsec int(11) NOT NULL default ‘0’,
disposition varchar(45) NOT NULL default ”,
amaflags int(11) NOT NULL default ‘0’,
accountcode varchar(20) NOT NULL default ”,
userfield varchar(255) NOT NULL default ”
);

ALTER TABLE cdr ADD INDEX ( calldate );
ALTER TABLE cdr ADD INDEX ( dst );
ALTER TABLE cdr ADD INDEX ( accountcode );
[/sql]

extension_conf

[sql]CREATE TABLE extensions_table (
id int(11) NOT NULL auto_increment,
context varchar(20) NOT NULL default ”,
exten varchar(20) NOT NULL default ”,
priority tinyint(4) NOT NULL default ‘0’,
app varchar(20) NOT NULL default ”,
appdata varchar(128) NOT NULL default ”,
KEY id (id)
) TYPE=MyISAM;[/sql]

Пример вставки

[sql]INSERT INTO extensions_table VALUES (1, ‘mycontext’, ‘_574555XXXX’, 1, ‘Wait’, ‘2’);
INSERT INTO extensions_table VALUES (2, ‘mycontext’, ‘_574555XXXX’, 2, ‘SayNumber’, ‘102’);
INSERT INTO extensions_table VALUES (3, ‘mycontext’, ‘2815551212’, 1, ‘Playback’, ‘pbx-invalid’);[/sql]


Установка дополнений в asterisk 

Далее необходимо установить Asterisk c Addons. К радости в версии 1.8 есть встроенный Addons его надо только включить при установки.  Предварительно нужно установить termcap (termcap-dev или lib) , ncurses(-dev или lib),  это необходимо для конфигурации  меню (make menuselect). И не обязательно doxygen и libxml2

(если libxml2 нет, то при конфигурации  достаточно написать ./configure –disable-xmldoc)

скачиваем архив

распаковываем

tar -zxvf  asterisk-1.8.***

cd asterisk-1.8.***

./configure

make menuselect  

menu_asterisk

make menuselect

Выбираем  строчку  Add-ons активируем все что связано с mysql. Жмем Esc

menu_asterisk

make menuselect

  В  главном меню меню   выбираем  Module Embedding   включаем Addo

menu add-ons

menu add-ons

При выходе  жмем S (для сохранения параметров)

если меню не запустилось следовательно  это может быть из за двух причин

1 – не установлены дополнительные  пакеты перечиленные выше

2 – разрешение окна слишком мало, это легко поправимо если есть возможность просто увеличить консоль до необходимых размеров.

далее

make

make install

make samples

и если есть doxygen

make progdoc

Пробуем запустить.

service asterisk start

если нет asterisk в service, то

asterisk

asterisk -rvvv

либо

/usr/sbin/./asterisk  

Запуск astreisk

asterisk -rvvv

CLI>

Необходимо удостоверится что mysql модули установились

должно показаться 3 модуля

 module show like mysql 

Module

res_config_mysql.so

cdr_addon_mysql.so

app_addon_sql_mysql.so

3 modules loaded

Настройка конфигурационных файлов

Выход из консоли Ctrl + C

Если вы вышли из консоли управления asterisk это не значит что процесс остановлен, вызовы могут так же происходить.

Чтобы узнать запущен ли asterisk или нет выполнить команду

pstree

 Редактирование  конфигурационных файлов 

Все конфигурационные файла Asterisk  находятся в (если не указывать другой путь при установки, подсказка для этой настройки ./configure –help) /etc/asterisk

extconfig.conf

необходимо раскомментировать следующие строчки  строчки

sippeers => mysql,asterisk,sip_conf

sipusers => mysql,asterisk,sip_conf

extensions=> mysql,asterisk,extensions_conf

res_config_mysql.conf    (или res_mysql.conf)

[general]

не трогаем general  и вообще оставляем его пустым

создаем новый параметр  и назовем его допустим asterisk:

[astreisk]

dbhost = localhost

dbname = asterisk

dbuser = asterisk

dbpass = asterisk

dbport = 3306

dbsock = /tmp/mysql.sock

;dbcharset = utf8

;dbcharset = latin1

;requirements=warn ; or createclose or createchar

dbsock = /tmp/mysql.sock   это параметр по умолчанию, но подключение asterisk к базе ен будет выполнено если он не найдет файл mysql.sock (а в некоторых ОС например Ubuntu 11.10 этот файл называется mysqld.sock)

чтобы определить место нахождение данного файла выполнить

find / -name mysql.sock

или

find / -name mysqld.sock

после выполнения команды выведется путь к файлу.

его необходимо скопировать и указать в res_config_mysql.conf    (или res_mysql.conf) в параметр dbsock.

cdr.conf

[general]

enable=yes

unanswered=yes

extensions.conf

[general]

switch => Realtime/@extensions

Далее заполняем таблицы

Если в phpmyadmin то выбираем базу asterisk, слева  выбираем нужную таблицу и рядом с таблицей жмем изменить. Заполняем.

Все сохраняем.

в консоли желательно перезапустить mysql и asterisk

service mysql ( или mysqld) restart 

service asterisk restart 

либо

killall asterisk  

asterisk ( или /usr/sbin./asterisk)


Проверка соединения базы 

Заходим в консоль

asterisk -rvvv

CLI> 

смотрим подключение к базе

realtime mysql status

general connected to asterisk on socket file /var/lib/mysql/mysql.sock with username asterisk for 0 seconds.

asterisk connected to asterisk@localhost, port 3306 with username asterisk for 18 days, 21 hours.

проверяем соединение с таблицей cdr

cdr mysql status

Connected to asterisk on socket file /var/lib/mysql/mysql.sock using table cdr for 18 days, 21 hours, 57 minutes, 17 seconds.

Wrote 64 records since last restart.

проверяем берет ли пользователей из базы

realtime load sippeers name user_name

или

realtime load sipusers name user_name

[EXPAND Выводимый результат]

——————–      ——————–

id                                           9

accountcode                         user

disallow                               all

allow                                    alaw

allow                                    ulaw

allow                                    g729

allowoverlap                          yes

allowsubscribe                       yes

allowtransfer

amaflags                                default

autoframing

auth

buggymwi                                 no

callgroup

callerid

cid_number

fullname

call-limit                                 0

callingpres

canreinvite                             yes

context                                  outbound

defaultip

dtmfmode                                 rfc2833

ext_num

fromuser zhilkoff

fromdomain

fullcontact

full_name

g726nonstandard no

host dynamic

id_user                                         1

insecure

int_num

ipaddr                                         1.1.1.1

language

lastms 0

mailbox

maxcallbitrate                              384

mohsuggest

md5secret

musiconhold

name                                            my_user

nat                                                yes

outboundproxy

deny

permit

pickupgroup

port                                         5060

progressinband                         no

promiscredir                             no

qualify                                      no

regexten

regseconds                                 1315557932

reservenum

rfc2833compensate                   no

rtptimeout

rtpholdtimeout

secret                                          my_password

sendrpid                                       yes

setvar

subscribecontext

subscribemwi

t38pt_udptl                                      no

trustrpid                                           no

type                                                  friend

useclientcode                                    no

username                                           my_user_name

usereqphone                                      no

videosupport                                     yes

vmexten

[/EXPAND]

sippeers или  sipusers зависит от указанного типа пользователя . Если тип friend то любая команда подойдет.

Вообщем если звонок идет, телефоны регистрируются и запись  

разговоров пишется в таблицу  все ok.

Оставить комментарий