IP АТС на коленке. Asterisk + Zadarma

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Статья обновлена 30.10.2017
  1. 3CX - готовая АТС. Всё бы хорошо - но начальство сказало дорого. К тому же уйдёт некоторое время на разбирательство, что как и почему.
  2. Mango-Office - одна из не многих причин выбора этой конторы - это то что их офис рядом. Можно пойти и попинать. Мы хотели у них брать пару номеров и SIP-транк. Уже было чуть не заключили с ними договор, но наткнулись на кучу негативных отзывов. А все положительные были от людей у которых по 2 отзыва, оба из которых делались в один день с разницой по времени в пару минут. К тому же даже если брать у них только SIP транк и пару номеров - они включают в счёт ВАТС. И без неё ни как нельзя. Начальству это не понравилось.
  3. AskoziaPBX - хорошее решение на основе Asterisk'a. Купил, скачал, залил на флешку и работаешь. Не устроила ценовая политика.
Терпев фиаско одно за другим, получая от начальства подзатыльники было принято решение сделать всё на своих мощностях своими руками.Насмотревшись на то как Askozia хороша и проста в работе, было принято решение всё запустить на Asterisk'e. Осталось найти провайдера SIP телефонии который предоставит номера и собственно сам SIP-транк без навязывания дополнительных ненужных услуг. Под раздачу попали местные городские и региональные операторы: Билайн, Мегафон, Орион, Ростелеком и т.д. Подробно расписывать почему мы не стали с ними работать не буду, скажу только что где-то дорого, где-то навязывают лишнее, где-то просто не смогли донести до манагера что нам надо.

Пока смотрели местных операторов, на глаза попадались разные конторы которые предоставляли как и номера, так и сами транки. И вот среди них нам попался "Задарма". Цены порадовали, условия тоже. Так же понравилась гибкость и система управления в личном кабинете. В итоге решили на нём всё и протестировать. Зарегистрировали аккаунт (скажу что при регистрации на счету 20 рублей чего достаточно чтобы совершать тестовые звонки для проверки связи и проверки настройки АТС), и занялись установкой Asterisk'a. На самом сайте можно скачать готовые ISO образы для установки на различные ОС (в т.ч. и Windows. Правда видимо проект закрыт, т.к. обновлений на нём не видно), и почитать информацию о нём. В интернете есть множество статей на эту тему, я же предоставлю вам адаптацию нескольких статей с некоторыми правками под себя. В статье я буду предполагать что вы ознакомлены с системными и хардварными требованиями для VoIP и в частности Asterisk'a. И так начнём. Я буду ставить Asterisk на ОС Centos 7.

Установка Centos 7 не тревиальна и проста. Если вы хоть раз ставили хоть одну операционку, то и тут ни каких сложностей у вас возникнуть не должно. Я всегда скачиваю образ с оф сайта и ставлю его. Там графический интерфейс, к тому же с русским языком. Разораться проблем не составит. Там же сразу можно настроить сеть и часовой пояс, чтобы в последствии этим не заморачиваться.

Единственная рекомендация которая у меня будет: если ставите на виртуалку, подготовте сразу либо два диска, либо один достаточно ёмкий. На случай если решите делать запись разговоров.И так. После установки системы, приступим к её первоначальной настройке.

Подготовка системы

Я предпочитаю работать из консоли putty по ssh, чтобы это сделать вначале откроем доступ. Чтобы это сделать, нужно отредактировать конфиг. Редактировать я предпочитаю в nano. Так что установим его для начала

yum -y install nano

после чего редактируем конфиг

nano /etc/ssh/sshd_config

и расcкомментируем там две строчки

Port 22
PermitRootLogin yes

Теперь перезапустим демона ssh

service sshd restart

Теперь можно цепляться по ssh и продолжить работу. Посмотрим на версию системы

uname -a

Linux testphone 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

и запустим обновление

yum update

После нам следует обновить ядро системы. Из коробки это не делается, поэтому добавим ключ

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

обновим модуль fastestmirror если требуется и собственно запустим обновление ядра

yum install yum-plugin-fastestmirror
yum --enablerepo=elrepo-kernel install kernel-ml


Как мы помним у нас стоит версия 3.10, на момент написания статьи - 4.13. После обновления ядра, следует указать системе грузиться с него по умолчанию (в противном случае при загрузке системы нужно будет его выбирать вручную)

grub2-set-default 0

Теперь отключим SElinux.

nano /etc/sysconfig/selinux

Изменяем Значение

SELINUX=disabled

Так же в этой статье я не буду касаться вопроса безопастноси, поэтому отключаем штатный фаервол

systemctl stop firewalld
systemctl disable firewalld

Далее рекомендую установить webmin. Считаю его в некоторых случаях довольно полезным. Но в этой статье мы его использовать не будем. Создадим файл

nano /etc/yum.repos.d/webmin.repo

со следующим содержимым

[Webmin]
name=Webmin Distribution Neutral
#baseurl=http://download.webmin.com/download/yum
mirrorlist=http://download.webmin.com/download/yum/mirrorlist
enabled=1

импортировав ключ

rpm --import http://www.webmin.com/jcameron-key.asc

запустим установку

yum install -y webmin

После установки можно войти в панель WebMin по адресу https://ваш_ip:10000. Логин и пароль использовать от root.


Теперь перегружаемся

reboot

Установка Asterisk

 
Теперь приступим к установке самого Asterisk'a. Для начала подключим дополнительный репозиторий и установим всё что нам может потребоваться.

yum -y install epel-release
yum -y install lynx mariadb-server mariadb php php-mysql php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear phpmyadmin
yum -y groupinstall core base "Development Tools"

Теперь приступим к скачиванию и установке pjproject

cd /usr/src
wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
tar -xjvf pjproject-2.*
cd pjproject-2.*
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
make dep
make
make install

Скачиваем и устанавливаем jansson:

cd /usr/src
wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz
tar vxfz jansson.tar.gz
cd jansson-*
autoreconf -i
./configure --libdir=/usr/lib64
make
make install

И собственно скачиваем и ставим сам астериск

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvfz asterisk-13-current.tar.gz
cd asterisk-*
contrib/scripts/install_prereq install
contrib/scripts/get_mp3_source.sh
./configure --libdir=/usr/lib64
make menuselect

Выбираем необходимые модули и звуки:
  • Add-ons: format_mp3, res_config_mysql, app_mysql и cdr_mysql.
  • Core Sound Packages: Выбираем русские звуки RU-WAV.
  • Music On Hold File Packages: Выбираем звук WAV.
  • Extras Sound Packages: Выбираем английский EN-WAV, русского к сожалению нет
Продолжаем установку

make
make install
make samples
make config
ldconfig

Устанавливаем озвучки

cd /var/lib/asterisk/sounds
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-wav-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
tar xvf asterisk-core-sounds-ru-wav-current.tar.gz
tar xvf asterisk-extra-sounds-en-wav-current.tar.gz

Ну вот и готово. Астериск установлен. Добавляем в автозагрузку, стартуем и заходим для теста в консоль

chkconfig asterisk on
service asterisk start
asterisk -r

 
Если мы видим примерно такой вывод, то всё ок. Можно приступать к конфигурации Asterisk'a.

Конфигурирование Asterisk

Для начала нам понадобится телефон, с помощью которого мы сможем цепляться к АТС. Можно использовать IP Телефон, если таковой имеется, либо поставить 3CXPhone. Правда нужно ставить старую версию. Скачать её можно тут и тут. Устанавливаем на компьютер.Теперь нужно создать пользователей на АТС, чтобы мы могли зацепиться. Если мы до сих пор в консоли астериска выходим из неё сочетанием клавиши "Ctrl+C" либо прописываем

exit

В файле конфигурации по умолчанию очень много комментариев, с одной стороны это хорошо, но довольно сильно мешает работе. Поэтому стандартный файл бекапим, старый очищаем :)

cp /etc/asterisk/sip.conf /etc/asterisk/sip_bck.conf
rm /etc/asterisk/sip.conf
nano /etc/asterisk/sip.conf

Мой файл получился вот таким:

[general]
;Внешний ip адрес
externaddr=195.66.89.235:5060
;Указываем использовать русскую озвучку
language=ru
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
allowguest=no
limitonpeers=yes
[authentication]
;Создаем шаблон для телефонов Администрации
[adm-phones](!)
type=friend
context=call-out
secret=123
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=1
pickupgroup=1
call-limit=2
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
;Создаем пользователей администрации
[101](adm-phones)
callerid="Number 101" <101>
[102](adm-phones)
callerid="Number 102" <102>
[103](adm-phones)
callerid="Number 103" <103>
[104](adm-phones)
callerid="Number 104" <104>
[105](adm-phones)
callerid="Number 105" <105>
[106](adm-phones)
callerid="Number 106" <106>
;Создаем шаблон для телефонов ITO
[ito-phones](!)
type=friend
context=call-out
secret=456
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=2
pickupgroup=2
call-limit=2
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
;Создаем пользователей ito
[666](ito-phones)
callerid="Number 666" <666>
[777](ito-phones)
callerid="Number 777" <777>
;Создаем шаблон для телефонов мэнеджеров
[man-phones](!)
type=friend
context=call-out
secret=789
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=3
pickupgroup=3
call-limit=2
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
;Создаем пользователей менеджеров
[121](man-phones)
callerid="Number 121" <121>
[122](man-phones)
callerid="Number 122" <122>
[123](man-phones)
callerid="Number 123" <123>
[124](man-phones)
callerid="Number 124" <124>
[125](man-phones)
callerid="Number 125" <125>

Остановимся не много подробнее на параметрах
  • callgroup - группа звонков. Можно настроить что призвонке на один номер из этой группы, у остальных тоже будет звонить.
  • pickupgroup - группа перехвата вызова. Если идёт звонок, а человека нет, люди из той же группы могут перехватить вызов на себя.
  • call-limit=2 - количество одновременных вызовов. Допустим человек говорит по телефону, а ему поступает второй вызов. Он может первый поставить на удержание и ответить на второй.
Абонентов создали. Теперь приступим к созданию плана звонков. Чтобы они могли звонить друг другу. С файлом поступаем точно так же как и с предыдущим.

cp /etc/asterisk/extensions.conf /etc/asterisk/extensions_bck.conf
rm /etc/asterisk/extensions.conf
nano /etc/asterisk/extensions.conf

Содержание файла

[general]
static=yes
writeprotect=no
[globals]
[default]
;Вешаем трубку
[handup-sip]
exten => _X!,1,HangUp()
;Исходящие звонки
[call-out]
;Звонок на внутренний номер
exten => _XXX,1,Dial(SIP/${EXTEN})
include => handup-sip

Теперь заходим в консоль и перегружаем asterisk

asterisk -r
reload

Если видите кучу ошибок - это нормально. У нас много чего ещё не настроено. Теперь посмотрим и убедимся в том что абоненты были успешно созданы

sip show users


Теперь попробуем подключиться к нашей атс. Открываем 3CXPhone и настраиваем его следующим образом


При подключении к АТС в консоли астериска вы должны увидеть примерно следующее:

[Oct 30 12:30:25] NOTICE[12641]: chan_sip.c:24586 handle_response_peerpoke: Peer '666' is now Reachable. (109ms / 2000ms)
[Oct 30 12:30:25] NOTICE[12641]: chan_sip.c:28404 handle_request_subscribe: Received SIP subscribe for peer without mailbox: 666

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

sip show peers

 
Для проверки звонков нам нужно два абонента. Поэтому либо ставим ещё один софтофон на какой либо компьютер, либо в этом же добавляем вторую линию на другой номер. И звоним друг другу. Должно всё работать. Если же не работает, смотрите что сделали не так, либо задавайте вопросы в комментарии.

Добавляем транк

Теперь переходим к добавлению транков. Для этого нам собственно нужен сам SIP транк. В нашей статье мы будем использовать Zadarma. Регистрируемся там и создаём SIP логин. После регистрации и создания транка нам будут интересны следующие его параметры:
  • Сервер - sip.zadarma.com
  • Логин - в моём случае 718824
  • Пароль - password
Редактируем файл /etc/asterisk/sip.conf

nano /etc/asterisk/sip.conf

Добавляем в конец файла настройки транка. Обратите внимания на поле secret: там должен быть ваш пароль

[718824]
host=sip.zadarma.com
insecure=invite,port
type=friend
fromdomain=sip.zadarma.com
disallow=all
allow=alaw
dtmfmode=auto
secret=password
defaultuser=718824
trunkname=718824
fromuser=718824
callbackextension=718824
context=call-in
qualify=400
directmedia=no
nat=force_rport,comedia

Перечитаем конфигурацию, выполнив команду в консоли астериска

sip reload

Если всё гуд, вы увидите примерно такое сообщение:

[Oct 30 12:48:23] NOTICE[12641]: chan_sip.c:24586 handle_response_peerpoke: Peer '718824' is now Reachable. (62ms / 400ms)

Транк подключен. Но звонить пока ещё нельзя. Для этого нужно составить план звонков (диал план)

Составление Dial-плана

В нашем диал плане пока указано что мы можем звонить на 3-х значные номера. Исправим это. Редактируем файл /etc/asterisk/extensions.conf

nano /etc/asterisk/extensions.conf

И приводим его к следующему виду. Изменения я выделил жирным шрифтом

[general]
static=yes
writeprotect=no
[globals]
[default]
;Вешаем трубку
[handup-sip]
exten => _X!,1,HangUp()
;Исходящие звонки
[call-out]
;Звонок на внутренний номер
exten => _XXX,1,Dial(SIP/${EXTEN})
;Звонок на внешний номер
exten => _XXX.,1,Dial(SIP/${EXTEN}@718824)
include => handup-sip
;Входящие звонки
[call-in]
exten => 718824,1,Dial(SIP/666)

Перегружаем астериск из консоли

asterisk -r
reload

Теперь мы можем позвонить. Для этого набираем на нашем софтофоне номер. Можем позвонить на сотовый. Номер должен начинаться с "7". Отвечать не стоит, ибо тогда со счёта будут списаны деньги, а нам ещё нужно будет не раз тестировать звонки.В данном виде АТС уже почти работоспособна. Допустим если купить номер у задарма, то можно будет позвонив по нему попасть на секретаря (в данном случае это номер 666), но у нас нету ни какого голосового меню и люди не будут знать что делать дальше. Поэтому нам нужно настроить голосовое меню.

Настройка голосового меню IVR

Записать голосовое меню можно разными способами, кто то делает это напряму с телефона, кто то через системный телефон, я же запишу отдельно на компьютере, и перекодирую в нужный формат. Кодируем обязательно в Wave/8000 Hz/16Bit/Mono. Кодирование производил AIMP Audioconverter :)И так. Создадим папку где будет лежать голосовое меню

mkdir /etc/asterisk/ivr

И заливаем туда файл. Используйте любой способ. Я заливал через программу WinSCP. Скачать можно тут и тутТеперь отредактируем файл /etc/asterisk/extensions.conf

nano /etc/asterisk/extensions.conf

В конец файла добавляем 

[ivr-main]
exten => s,1,Answer()
;Проигрываем приветствие
exten => s,2,Background(/etc/asterisk/ivr/ivr-main)
;Ждем 5 секунд ввода добавочного номера
exten => s,3,WaitExten(5)
;Звоним по введенному добавочному
exten => _XXX,1,Dial(SIP/${EXTEN})
;Если введен не существующий номер, то говорим об этом и отправляем в начало приветствия
exten => _XXX,2,Playback(privacy-incorrect)
exten => _XXX,3,Goto(ivr-main,s,1)
;Если звонящий ничего не вводит, то звоним секретарю
exten => t,1,Dial(SIP/666)

И заменяем строчку в контектсе [call-in] на

exten => 718824,1,Goto(ivr-main,s,1)

Под спойлером будет полный конфиг

Голосовое меню настроено. Теперь перейдём к очереди входящих вызовов.

Очереди (queues) входящих звонков

Очередь входящих звонков позволяет управлять потоком входящих вызовов и позволяет более гибко их распределять. Настроим очередь следующим образом: после голосового меню, если звонящий не набрал внутренний номер, его перебросит на одного из секретайрей. Номера секретарей будут 666 и 100. Для этого открываем файл /etc/asterisk/queues.conf

nano /etc/asterisk/queues.conf 

и в самый конец добавляем

[secretary]
strategy = ringall
member => SIP/100
member => SIP/666

Параметр strategy может принимать следующие значения
  • ringall - вызываются все доступные участники до тех пор, пока кто-то из них не ответит на вызов (по умолчанию).
  • leastrecent - вызывается первый свободный участник, который меньше всего вызывался из этой очереди.
  • fewestcalls - вызывается первый свободный участник, который обработал наименьшее количество вызовов из данной очереди.
  • random - случайным образом вызывается не занятый участник, обрабатывающий очередь.
  • rrmemory - циклическое распределение с памятью, запоминается последний участник, ответивший на вызов.
Далее в диалплане меняем строчку в контексте с голосовым меню

exten => t,1,Dial(SIP/666)

на новую

exten => t,1,Queue(secretary,t)

После чего перечитываем диалплан в консоли астериска

asterisk -r
reload

и проверяем состояние очереди

queue show secretary

У меня вывод принял следующий вид

testphone*CLI> queue show secretary
secretary has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
 Members:
 SIP/666 (ringinuse enabled) (Not in use) has taken no calls yet
 SIP/100 (ringinuse enabled) (Invalid) has taken no calls yet
 No Callers

SIP/100 Invalid - потому как не создан данный абонент. Я исправлю это в конце когда полностью закончу с настройкой АТС.

Теперь перейдём к самому интересному. Статистика звонков.

Учет и просмотр статистики звонков (cdr viewer)

По умолчанию статистика звонков ведётся в файл /var/log/asterisk/cdr-csv/Master.csv. Там есть все нужные данные, но читать его не очень то и удобно. Поэтому установим и настроим систему которая позволит его преобразовывать в читабельный вид и смотреть через браузер.Для начала запустим и добавим в автозагрузку mariadb

systemctl start mariadb
systemctl enable mariadb.service

Запустим скрипт первоначальной настройки

/usr/bin/mysql_secure_installation

После чего цепляемся в консоль mysql

mysql -uroot -p

Создаём пользователя и базу данных

MariaDB [(none)]> create database asterisk;
MariaDB [(none)]> use asterisk;
MariaDB [asterisk]> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL auto_increment, `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 '', `uniqueid` varchar(32) NOT NULL default '', `userfield` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
MariaDB [asterisk]> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '12345678';

  • asterisk - имя базы данных
  • asterisk_user - пользователь базы данных
  • 12345678 - пароль пользователя бд
Ставим obdc коннекторы

yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64

Редактируем файлы конфигурации. Добавляем в самый конец /etc/asterisk/res_odbc.conf:

[asterisk]
enabled => yes
dsn => MySQL-asterisk
username => asterisk_user
password => 12345678

В конец файла /etc/asterisk/cdr_adaptive_odbc.conf:

[cdr_adaptive_connection]
connection=asterisk
table=cdr
alias start => calldate

Создаем файл /etc/odbc.ini следующего содержания:
[MySQL-asterisk]
Description = MySQL Asterisk database
Driver = MySQL
Server = localhost
User = asterisk_user
Password = 12345678
Socket = /var/lib/mysql/mysql.sock
Database = asterisk

Редактируем файл /etc/odbcinst.ini

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
CPTimeout =
CPReuse =

Настроим часовой пояс в файле /etc/asterisk/cdr.conf. Почти в самом конце файла есть параметр usegmtime. Меняем значение на "no"

usegmtime=no

Перегружаем asterisk полностью

service asterisk restart

Теперь история наших звонков сохраняется в mysql базу. Посмотреть её можно подцепившись к ней, либо настроив phpmyadmin. Но я не буду касаться этого вопроса в этой статье.По мимо просмотра статистики звонков, сделаем ещё возможность записывать разговоры (тотальная слежка detected). Для этого установим конвертер lame, ведь мы будем записывать в mp3

cd /usr/src
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz
tar zxvf lame-3.*
cd lame-3.*
./configure
make
make install

Перед установкой вьювера запустим веб-сервер и добавим его в автозагрузку

systemctl start httpd
systemctl enable httpd

Теперь приступим к установке самого вьювера. Использовать будем  Asterisk-CDR-Viewer-Mod.

cd /usr/src
wget https://github.com/prog-it/Asterisk-CDR-Viewer-Mod/tarball/master 
tar xzvf master

Копируем всё содержимое в папку /var/www/html.Сконфигурируем CDR, для этого зайдём в консоль управления mysql и добавим дополнительное поле для хранения файла с записью

mysql -root -p
use asterisk
alter table `cdr` add column `filename` varchar(120) DEFAULT 'none' after `userfield`;

Редактируем файл /etc/asterisk/cdr_mysql.conf, добавляя в самый конец 2 строки:

alias realdst => realdst
alias filename => filename

Теперь в файле /etc/asterisk/extensions.conf в секции глобал укажем где будут храниться файлы с записями (вот для этого я рекомендую либо использовать другой винт/флешку, либо прицепить NFS)

[globals]
DIR_RECORDS=/mnt/calls/

Теперь добавим макрос для записи звонков перед контекстами звонков

[macro-recording]
exten => s,1,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3");
exten => s,n,Set(CDR(filename)=${fname}.mp3);
exten => s,n,Set(CDR(realdst)=${ARG2});
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt});
exten => s,n(no),Verbose(Exit record);

и редактируем сами контексты звонков добавляя туда макрос. Как это выглядит у меня:


Перезапускаем asterisk

service asterisk restart

и конфигурируем подключение CDR к mysql. Для этого переименуем файл /var/www/html/inc/config/config.sample.php в /var/www/html/inc/config/config.php и отредактируем его

nano /var/www/html/inc/config/config.php

Меняем только следующие параметры

$db_type = 'mysql';
$db_host = 'localhost';
$db_port = '3306';
$db_user = 'asterisk_user';
$db_pass = '12345678';
$db_name = 'asterisk';
$db_table_name = 'cdr';
$system_storage_format = 5;
$system_monitor_dir = '/mnt/calls';

После этого можно попробовать совершить звонок, и смотреть статистику.


Вот и всё. АТС настроена и готова к работе :)
Если есть какие то вопросы, не стесняемся, задаём их в коментариях. Ну или связываемся со мной одним из способов описаных на этой странице

Вдохновлялся статьём с сайта serveradmin.ru и основывался на его материалах

Поделись с друзьями

Имя:*
E-Mail: