Установка, настройка Asterisk+FreePBX и подключение к мини АТС Panasonic TDA600RU

1. Исходные данные

Имеется:

  • офисная атс Panasonic TDA600RU с подключенными к ней внутренними абонентами, внутренние номера телефонов офисной атс 1XX, 2XX, 3XX, 4XX. Номера 5XX — отданы под DISA, 6XX — под группы абонентов;
  • к офисной атс подключены 2ва потока E1 (через платы PRI30) от телефонного провайдера, для звонков из/в город. Выход в город через 9;
  • дополнительная плата PRI30 для Panasonic TDA600RU;
  • сервер Dell PowerEdge 2900: Intel(R) Xeon(R) CPU 5130, RAM 4Gb, два HDD 72Gb объединенных в RAID1;
  • VoIP плата http://www1.digium.com/en/products/telephony-cards/digital/dual-span (TE210P с модулем http://www1.digium.com/en/products/telephony-cards/modules-accessories/echo-cancellationаппаратного эхоподавления).

Необходимо:

  • на Dell PowerEdge2900 необходимо установить и настроить VoIP сервер на базе Asterisk, объединить его с офисной миниАТС Panasonic TDA600RU через E1;
  • объединить номерные планы, чтобы звонки на внутренние телефоны с VoIP сервера на офисную атс и с офисной атс на VoIP сервер рассматривались как внутренние с передачей CallerID и CallerID Name. При этом должно быть минимум изменений в офисной атс, т. к. к ней подключено более 250 абонентов и их трогать никак нельзя;
  • звонки с VoIP сервера в город должны маршрутизироваться через офисную атс.

2. Планирование

В качестве операционной системы для VoIP сервера выбрана CentOS 6.0. Номера внутренних абонентов VoIP сервера будут начинаться на 7. Выход в город для внутренних абонентов VoIP сервера осуществляется через 9.

3. Установка операционной системы

Устанавливаем на сервере операционную систему CentOS 6.0 x86_64. Дополнительно устанавливаем ntp и настраиваем его на синхронизацию с нашим внутриофисным сервером времени.

4. Установка программного обеспечения

4.1. Подготовка к инсталляции

Устанавливаем пакеты необходимые для компиляции Asterisk:

yum install gcc gcc-c++ kernel-devel bison \
libtermcap-devel ncurses-devel doxygen curl-devel newt-devel \
mlocate lynx tar wget nmap bzip2 mod_ssl crontabs vixie-cron \
libtool-ltdl-devel mysql mysql-devel libxml2-devel \
mysql-server php-mysql php-mbstring php-mcrypt flex screen \
libtiff-devel iksemel-devel libvorbis-devel libogg-devel \
speex-devel libsrtp-devel net-snmp-devel \
neon-devel libical-devel gmime-devel patch

4.2. Скачивание необходимых исходников

Скачиваем с официальных сайтов следующие пакеты:

Asterisk версии 1.8.10.1:

http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.10.1.tar.gz

Дополнения для Asterisk версии 1.6.2.3:

http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.3.tar.gz

Драйвера версии 2.6.0 для VoIP карт Digium:

http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.0+2.6.0.tar.gz

Библиотека libpri версии 1.4.12 для работы карты Digium Wildcard TE212P с PRI:

http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.12.tar.gz

Веб интерфейс FreePBX версии 2.9.0 для конфигурирования VoIP сервера:

http://mirror.freepbx.org/freepbx-2.9.0.tar.gz

Складываем архивы в /usr/src и распаковываем их командой:

tar -xzf <имя архива>

4.3. Компиляция исходников

4.3.1. Компиляция драйверов для платы Digium Wildcard TE212P

4.3.1.1. Компиляция библиотеки libpri с патчем для TDA600RU

Библиотека libpri предназначена для работы платы Digium Wildcard TE212P по PRI протоколу.

Заходим в папку с исходниками libpri и применяем патч из файла /download/asterisk/libpri/42987_jira_pri_132_hack.patch для libpri версии 1.4.12.

Патч предназначен для того, чтобы при звонках с Asterisk на миниАТС Panasonic TDA600RU передавались CallerID Name (https://issues.asterisk.org/jira/browse/PRI-132), т. к. Panasonic TDA600RU передает и принимает Facility по QSIG не по утвержденному стандарту.

Патч применяется следующим образом:
скопировать файл с патчем 42987_jira_pri_132_hack.patch в директорию с исходными кодами libpri версии 1.4.12;
применить команду:

patch < 42987_jira_pri_132_hack.patch

После применения патча файл rose.c изменится согласно патч файлу.

Далее в директории с исходниками libpri выполняем следующие команды:

make clean
make
make install

4.3.1.2. Компиляция модулей ядра для работы с платой Digium Wildcard TE212P

Патчим исходники, патчем из файла /download/asterisk/dahdi/0001-wct4xxp-VPM-module-creates-noise-on-alternate-channe.patch для DAHDI версии 2.6.0.

Патч предназначен для устранения ошибки в DAHDI версии 2.6.0, проводящей к плохому качеству звука на E1 линиях (https://issues.asterisk.org/jira/browse/DAHLIN-275).

Данный патч предназначен для устранения проблемы только на 2 или 4 портовых картах Digium с модулем аппаратного эхоподавления, как в нашем варианте.

Патч применяется следующим образом:
скопировать файл с патчем в директорию с исходными кодами DAHDI версии 2.6.0/linux/drivers/dahdi/wct4xxp;
применить команду:

patch < 0001-wct4xxp-VPM-module-creates-noise-on-alternate-channe.patch

Далее заходим в директорию с исходниками DAHDI и выполняем команды:

make clean make all make install make config

4.3.2. Компиляция Asterisk

Заходим в директорию с исходниками Asterisk и выполняем следующее:

./configure
make
make install

4.3.3. Компиляция модуля Asterisk’a для работы с mysql

Заходим в директорию Asterisk-Addons и выполняем следующее:

./configure
make menuselect

Оставляем только cdr_mysql, сохраняем, выходим и выполняем следующее:

make
make install

4.4. Установка freePBX

4.4.1. Установка

FreePBX — web интерфейс для конфигурирования Asterisk сервера.

Заходим в директорию с исходными кодами freepbx и устанавливаем согласно инструкции по установке в файле INSTALL.

Заходим через веб интерфейс, обновляем существующие и устанавливаем недостающие для работы модули.

4.4.2. Руссификация экстеншенов

Для того чтобы можно было вводить имена пользователей в русской раскладке, необходимо пропатчить freepbx и внести некоторые изменения в базу данных.

4.4.2.1. Патч руссификации freepbx

Патчи применяем на уже установленные файлы freepbx, расположенных в /var/www/html/admin

Файл /var/www/html/admin/common/db_connect.php патчим файлом /download/asterisk/freepbx/admin_common_db_connect.php.patch

Файл /var/www/html/admin/libraries/components.class.php патчим файлом /download/asterisk/freepbx/admin_libraries_components.class.php.patch

Файл /var/www/html/admin/modules/core/functions.inc.php патчим файлом /download/asterisk/freepbx/admin_modules_core_functions.inc.php.patch

Для применения патча необходимо положить файл с патчем (патчфайл)в директорию, в которой лежит изменяемый файл, и выполнить:

patch < имя патчфайла

 !!! После применения патчей обновлять модули freepbx нельзя, т. к. при обновлении пропатченные файлы могут переписаться новыми.

4.4.2.2. Изменения в базе данных

Меняем базу данных: во всех таблицах базы asterisk изменяем кодировку символов с latin1 на utf8.

5. Настройка соединения с миниАТС Panasonic TDA600RU

5.1. Подготовка соединительного кабеля

обжимаем кабель для соединения:
берем витую пару и 2ва коннектора RJ45 и обжимаем следующим образом:

1 – 4
2 – 5
4 – 1
5 – 2

Подключаем кабель к Астериску и миниАТС.

5.2. Настройка платы Digium Wildcard TE212P

В файле /etc/dahdi/system.conf прописываем следующее:

span=1,0,0,CCS,HDB3
bchan=1-15,17-31
dchan=16
loadzone=ru
#span=2,0,0,CCS,HDB3
#bchan=32-46,48-62
#dchan=47
#loadzone=ru

5.3. Настройка Asterisk

5.3.1. Настройка соединения по QSIG

В файле /etc/asterisk/chan_dahdi_channels_custom.conf прописываем:

usecallerid=yes
hidecallerid=no
hidecalleridname=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
relaxdtmf=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=no
pridialplan=unknown
prilocaldialplan=private
facilityenable=yes
useincomingcalleridondahditransfer = yes
cidsignalling=v23

group=1
context=from-pstn
signalling=pri_cpe
switchtype=qsig
channel=1-15,17-31

;span 2
;group=2
;context=from-pstn
;signalling=pri_cpe
;switchtype=qsig
;channel=32-46,48-62

5.3.2. Настройка диалплана для передачи русских CallerID Name

Настройка заключается в добавление перекодирования русских CallerID Name при передаче из Asterisk на Panasonic и наоборот. Panasonic TDA600RU работает с кодировкой WINDOWS-1251, Asterisk — UTF-8.

В файле /etc/asterisk/extensions_custom.conf добавляем следующие контексты:

[from-pstn-custom] ;Звонки с Panasonic
;Перекодирование CALLERID NAME при звонках Panasonic->внутренние телефоны Asterisk
exten => _7[1-578]XX,1,Set(CALLERID(name)=${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})})
exten => _7[1-578]XX,n,Set(CALLERID(all)=${CALLERID(name)} <${CALLERID(num)}>)
exten => _7[1-578]XX,n,Goto(ext-local,${EXTEN},1)

;Перекодирование CALLERID NAME при звонках Panasonic->группы Asterisk
exten => _76XX,1,Set(CALLERID(name)=${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})})
exten => _76XX,n,Set(CALLERID(all)=${CALLERID(name)} <${CALLERID(num)}>)
exten => _76XX,n,Goto(ext-did,${EXTEN},1)

[macro-dialout-trunk-predial-hook]  ;Звонки с VoIP телефонов
;Перекодирование callerIDName при звонках Asterisk->Panasonic
exten => s,1,Set(CALLERID(name)=${ICONV(UTF-8,WINDOWS-1251,${CALLERID(name)})})
exten => s,n,Set(CALLERID(all)=${CALLERID(name)} <${CALLERID(num)}>)
exten => s,n,MacroExit()

5.4. Настройка миниАТС Panasonic TDA600RU

<label for=”list_panas”> На миниАТС в PBX Maintanence Console: </label>

  1. переводим плату PRI30, подключенную к серверу Asterisk в режим OUS;
  2. заходим в свойства порта платы и параметр Port type выставляем в QSIG-Master;
  3. параметр CRC4 mode ставим в disable;
  4. переводим плату PRI30 в режим INS;
  5. пункт 2.6.1 вкладка «функции», строка «Доступ к TIE линии»: вместо 7 пишем *2;
  6. в пункте 10.1 объединяем все порты платы PRI30 в одну транковую группу 4;
  7. в пункте 9.1 строка 14 в столбце «Первые цифры номера» прописываем 7XX в столбце «Группа внешних линий» пишем 4;
  8. в пункте 2.6.1 вкладка «Внутренняя линия другой УАТС» в строке 14 ставим 7;
  9. в пункте 3.1.2 в строке 4 выбираем <пусто>;
  10. Перезагружаем сервер.

6. Итог

После выполнения вышеперечисленного мы имеем VoIP сервер с веб управлением freepbx, объединенный с Panasonic TDA600RU через PRI.

Далее необходимо настроить VoIP сервер через веб панель: добавить пользователей, создать транки и настроить маршрутизацию.

При добавлении внутренних абонентов на VoIP сервер, их номера должны начинаться на 7.

 

Источник.