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:
Библиотека 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>
- переводим плату PRI30, подключенную к серверу Asterisk в режим OUS;
- заходим в свойства порта платы и параметр Port type выставляем в QSIG-Master;
- параметр CRC4 mode ставим в disable;
- переводим плату PRI30 в режим INS;
- пункт 2.6.1 вкладка «функции», строка «Доступ к TIE линии»: вместо 7 пишем *2;
- в пункте 10.1 объединяем все порты платы PRI30 в одну транковую группу 4;
- в пункте 9.1 строка 14 в столбце «Первые цифры номера» прописываем 7XX в столбце «Группа внешних линий» пишем 4;
- в пункте 2.6.1 вкладка «Внутренняя линия другой УАТС» в строке 14 ставим 7;
- в пункте 3.1.2 в строке 4 выбираем <пусто>;
- Перезагружаем сервер.
6. Итог
После выполнения вышеперечисленного мы имеем VoIP сервер с веб управлением freepbx, объединенный с Panasonic TDA600RU через PRI.
Далее необходимо настроить VoIP сервер через веб панель: добавить пользователей, создать транки и настроить маршрутизацию.
При добавлении внутренних абонентов на VoIP сервер, их номера должны начинаться на 7.