Минимальная настройка asterisk, web-интерфейс прослушивания звонков, статистика

Имеем в наличии ubuntu 18 уже установленную и готовую к подключению по ssh. sudo apt update && apt ugrade -y это первое, apt install asterisk — это второе, что нужно для минимальной установки астериска. Дальше чистим sip.conf и extension.conf от дефолтной стены текста. Для sip.conf у меня есть вот такой «белый» шаблон с минимальным набором, только добавить юзернеймы и пасворды:

root@srv:~# cat /etc/asterisk/sip.conf
[general]
allowguest=no;
defaultexpiry=120
;register => username:password@ip-hostname/username
canreinvit = no

[trunk]
qualify=yes
host=
defaultuser=
secret=
fromuser=
fromdomain=
type=peer
disallow=all
allow=alaw
allow=ulaw
allow=g729
nat=force_rport,comedia
directmedia=nonat
insecure=port,invite
context=

[ext](!)
host=dynamic
qualify=yes
type=friend
disallow=all
allow=alaw
allow=ulaw
allow=g729
nat=force_rport,comedia
directmedia=no
insecure=port,invite
dtmfmode=auto
context=

[1001](ext)
defaultuser=
secret=
callerid=

[1001](ext)
defaultuser=
secret=
callerid=

[1002](ext)
defaultuser=
secret=
callerid=

[1002](ext)
defaultuser=
secret=
callerid=

[1003](ext)
defaultuser=
secret=
callerid=

[1004](ext)
defaultuser=
secret=
callerid=

[1005](ext)
defaultuser=
secret=
callerid=

[1006](ext)
defaultuser=
secret=
callerid=

[1007](ext)
defaultuser=
secret=
callerid=

[1008](ext)
defaultuser=
secret=
callerid=

[1009](ext)
defaultuser=
secret=
callerid=

[1010](ext)
defaultuser=
secret=
callerid=

[1011](ext)
defaultuser=
secret=
callerid=

[](ext)
defaultuser=
secret=
callerid=

дальше минимальный план набора в extension.conf:


[general]
static=yes
writeprotect=no
autofallthrogh=yes
clearglobalvars=no

[default]
exten => _X.,1,HangUp()
exten => s,1,HangUp()
exten => i,1,HangUp()


[contex]

exten => _XXXX,1,NoOp
same  => n,Dial(Sip/${EXTEN},,tT)
same  => n,HangUp()

exten => _XXXXXXXXXX,1,NoOp()
same  => n,Dial(Sip/trunk/${EXTEN})
same  => n,HangUp()

Для статистики нам нужен MqSQL сервер. Для подключения к нему будем использовать Adaptive ODBC.

apt install mysql-server-5.7

Сразу создадим базу, пользователя и выдадим права ему на эту базу:

mysql -uroot

CREATE DATABASE cdr;

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON cdr. * TO 'user'@'localhost';

FLUSH PRIVILEGES;

Теперь нужно настроить подключение asterisk’а к MySQL с помощью ODBC. ODBC можно скачать на https://dev.mysql.com/downloads/connector/odbc/, скачиваем, распаковываем:

wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit.tar.gz

tar -xvf mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit.tar.gz

Устанавливаю ODBC лично я вручную (да, я старовер):
Переносим 3 lib-файла в /usr/lib/x86_64-linux-gnu/odbc/, дальше

создаём файлы (odbcinst.ini и odbc.ini) и заполняем их

/etc/odbcinst.ini

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8a.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8S.so

/etc/odbc.ini

[ast-connector]
Description           = MySQL connection to  database
Driver                = MySQL
Database              = database
Server                = localhost
User                  = user
Password              = pass
Port                  = 3306
Socket                = /var/run/mysqld/mysqld.sock

Ну и проверяем всё ли работает, вводим echo «select 1″ | isql -v ast-connector, вывод должен быть примерно вот таким:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select 1
+---------------------+
| 1                   |
+---------------------+
| 1                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched

В файл /etc/resodbc.conf добавляем:

[CDR]
enabled=>yes
dsn=>ast-connector
polling=>no
limit=>2
pre-connect=>yes
username=>username
password=>password

Заходим в консоль астериска, релоадим конфигурацию и проверяем, что астериск установил соединение:

asterisk -rvvvvvvvv
asterisk> reload
asterisk> odbc show all
ODBC DSN Settings
-----------------

  Name:   CDR
  DSN:    ast-connector
    Last connection attempt: 1970-01-01 00:00:00
    Number of active connections: 1 (out of 1)

И видим одно активное соединение, а это значит, что мы на верном пути.

Скачиваем наш вэб-интерфейс, распаковываем и следуем мануалу по его установке/настройке:

git clone https://github.com/prog-it/Asterisk-CDR-Viewer-Mod.git

Из read.me узнаём, что нам нужен ещё apache и php, устанавливаем:

apt install apache2 -y && apt install php7.2 && apt install php7.2-mysql

Теперь нужно в нашей БД создать таблицу, используем скрипт:
Asterisk-CDR-Viewer-Mod/docs/mysql_cdr.sql

mysql -uusername -ppassword database < ./mysql_cdr.sql

Правим /etc/asterisk/cdr_adaptive_odbc.conf чтобы в таблицу писались нужные нам данные

[cdr]
connection=CDR
table=cdr
alias realdst => realdst
alias remoteip => remoteip
alias start => calldate

Редактируем файл настроек вэб-интерфейса ./inc/config/config.php чтобы он мог подключиться к базе данных и достать данные из неё.