Итак, в этой заметке хочу описать процесс установки Asterisk версии 11 (а точнее Asterisk 11.7.0)

Часть информации взята из официального Wiki, и реализована на практическом примере. В данном примере не рассматривается вопрос установки библиотек libpri или каких либо других модулей

Для старта я использовал свежую версию Centos 6.6 i386 — minimal, чистая установка по-умолчанию. Дальнейшее руководство подразумевает, что на сервере доступна сеть и отключен SELinux.

1. Для начала доведем наш Centos до кондиции — доставим необходимые пакеты и обновимся

[root@centostest /]# yum groupinstall "Base" "Development Tools" "Networking tools" "System management"
[root@centostest /]# yum install compat-libtermcap ncurses-devel libxml2-devel sqlite-devel
[root@centostest /]# yum update

2. Создадим себе пользователя, где будем производить различные действия

[root@centostest /]# adduser user

3.  Теперь нам нужно скачать исходники свежей версии Asterisk 11

[root@centostest]# cd /home/user
[root@centostest user]# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

Далее распакуем дистрибутив

[root@centostest user]# tar -xzvf asterisk-11-current.tar.gz

4.  Начинаем компилировать систему

[root@centostest user]# cd asterisk-11.7.0/

Запустим конфигуратор. Все зависимости должны быть соблюдены, если нет — необходимо доставить не достающие библиотеки (если у вас иные шаги в пункте 1. )

[root@centostest asterisk-11.7.0]# ./configure

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

Нас интересуют следующие меню : Core Sound Packages, выбираем внутри EN и RU пакеты с кодаками WAV ULAW ALAW GSM

[root@centostest asterisk-11.7.0]# make menuselect

asterisk_1

 

Далее, сделав выбор, выходим из меню клавишей ESC. На вопрос о сохранении изменений жмем S

asterisk_2[root@centostest asterisk-11.7.0]# make

На данном этапе  инсталлятор скачает выбранные звуковые файлы или модули

[root@centostest asterisk-11.7.0]# make install

6. Установим конфигурационные файлы по умолчанию (они будут тут — /etc/asterisk)

[root@centostest asterisk-11.7.0]# make samples

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

[root@centostest asterisk-11.7.0]# make config

а так же систему ротации логов

[root@centostest asterisk-11.7.0]# make install-logrotate

7. На данном этапе простая установка завершена и Asterisk может быть запущен командой service asterisk start, однако, не рекомендуется запускать его используя root привилегии, поэтому сделаем для него пользователя и установим необходимые разрешения

[root@centostest asterisk-11.7.0]# adduser -M -U asterisk

Зададим права на папки и файлы

[root@centostest asterisk-11.7.0]# chown -R asterisk:asterisk /var/run/asterisk/
[root@centostest asterisk-11.7.0]# chown -R asterisk:asterisk /etc/asterisk/
[root@centostest asterisk-11.7.0]# chown -R asterisk:asterisk /usr/lib/asterisk/
[root@centostest asterisk-11.7.0]# chown -R asterisk:asterisk /var/lib/asterisk/
[root@centostest asterisk-11.7.0]# chown -R asterisk:asterisk /var/log/asterisk/

8. Отредактируем конфигурацию asterisk

[root@centostest asterisk-11.7.0]# vi /etc/asterisk.conf

уберите комментарии перед этими строчками

runuser = asterisk
rungroup = asterisk

сохраните файл (:wq)

9.  Теперь asterisk готов к запуску. Выполните команду

[root@centostest asterisk-11.7.0]# service asterisk start

10.  Проверьте работу через CLI

root@centostest asterisk-11.7.0]# asterisk -rvvvv
Privilege escalation protection disabled!
See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details.
Asterisk 11.7.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 11.7.0 currently running on centostest (pid = 31425)
centostest*CLI>

Итак, в это статье я  расскажу как заставить asterisk работать с факсами с бинарным модулем от Digium — res_fax_asterisk. Данный модуль для одной линии компания Digium предлагает бесплатно. Если планируете использовать более одной линии для отправки факсов, то придется покупать лицензии. В редких случаях понадобиться более одной линии, но если её будет мало — то потратив всего несколько десятков долларов можно без проблем докупить! Ещё оговорюсь — факсы по VoIP — это зло, избегайте их по возможности. Многие адаптеры SIP->FXS по разному обрабатывают поток данных, во многих прошивках есть баги, стационарные факсовые аппараты тоже работают по-разному.

 

Итак, вся процедура делится на несколько шагов, первый из них — регистрация на сайте digium и виртуальное приобретение ключика для одной линии.

Делается это по ссылке  Fax For Asterisk . Процесс регистрации на сайте я описывать не буду, однако имейте ввиду — получить бесплатную лицензию для одной учетной записи можно только один раз.

После успешной регистрации и «покупки» модуля придёт письмо с подтверждением и серийным номером. Он скоро понадобится.

Ну а теперь приступим непосредственно к установки. Итак, открывает консоль!

1. По умолчанию, будем считать, что работаем в домашнем каталоге пользователя user  (/home/user)

[root@ippbx /]# cd /home/user

Скачиваем необходимые инструменты
утилита register — необходима для регистрации модуля

[root@ippbx user]# wget http://downloads.digium.com/pub/register/x86-32/register

или для 64-битных систем

[root@ippbx user]# wget http://downloads.digium.com/pub/register/x86-64/register

Далее нам понадобится приложения для тестирования и определения лучшего модуля, который подходит системе и CPU
качаем для 32-битной или 64-битной системы соответственно

[root@ippbx user]# wget http://downloads.digium.com/pub/telephony/fax/benchfax/x86-32/benchfax-1.0.8-x86_32

или

[root@ippbx user]# wget http://downloads.digium.com/pub/telephony/fax/benchfax/x86-64/benchfax-1.0.8-x86_64

Далее сделаем полученные файлы исполняемыми

[root@ippbx user]# chmod 500 register
[root@ippbx user]# chmod 500 benchfax-1.0.x86*

Приступаем к регистрированию ключика запустив

[root@ippbx user]# ./register

Программа начнет задавать некоторые вопросы,  правильные ответы на них следующие

1 — Digium product
9 — Free Fax for Asterisk

Далее программа попросит ввести полученный ключик через электронную почту, а так же ещё раз заполнить данные владельца этого ключа.  Если честно, вводить другие данные отличные от регистрационных на сайте Diguim я не пробовал.
После этого установщик спросит подтверждение и создаст необходимые файлы для работы системы. Сам ключ будет находиться в папке /var/lib/asterisk/licences

Итак, мы получили и зарегистрировали ключ — приступим к выбору и установке самого модуля
Для начала, запустим программу benchfax — он проведет тестирование и подскажет какой модуль использовать

[root@ippbx user]# ./benchfax-1.0.8-x86_(архитектура)

Нужный модуль лежит тут

http://downloads.digium.com/pub/telephony/fax/res_fax_digium/ (версия asterisk) / (архитектура) / (модуль)

Для конкретного примера рассмотрим установку модуля generic для 64-битной архитектуры

[root@ippbx user]# wget http://downloads.digium.com/pub/telephony/fax/res_fax_digium/asterisk-11.0/x86-64/res_fax_digium-11.0_1.3.1-generic_64.tar.gz
[root@ippbx user]# tar -xzvf res_fax_digium-11.0_1.3.1-generic_64.tar.gz
[root@ippbx user]# cp res_fax_digium-11.0_1.3.1-generic_64/res_fax_digium.so /usr/lib/asterisk/modules/
[root@ippbx user]# cp res_fax_digium-11.0_1.3.1-generic_64/res_fax_digium.conf /etc/asterisk/
[root@ippbx user]# chown asterisk:asterisk /usr/lib/asterisk/modules/res_fax_digium.so
[root@ippbx user]# chown asterisk:asterisk /etc/asterisk/res_fax_digium.conf

Подключаем и проверяем модуль

Если asterisk запущен, перегружаем его любым удобным способом, например core restart now, или если есть вызовы то core restart when convienient
проверяем работу модуля

[root@ippbx user]# asterisk -rvvv

ippbx*CLI> fax show capabilities

Registered FAX Technology Modules:

Type : DIGIUM
Description : Digium FAX Driver
Capabilities : SEND RECEIVE T.38 G.711 MULTI-DOC
1 registered modules

Если модуль не загрузился, проверьте что модуль app_fax не загружен, и при наличии его — выгрузите

ippbx*CLI>module unload app_fax.so

В дальнейшем, добавьте в файл /etc/asterisk/modules.conf следующий параметр

noload => app_fax.so

В этой заметке я расскажу как научить asterisk принимать и отправлять факсы с помощью внутренних приложений SendFAX и RecieveFAX. Почему именно эти приложения? Во-первых, они обеспечивают расширенный функционал, а во вторых наиболее стабильную работу.

В данном руководстве будет рассмотрен вариант сборки asterisk с поддержкой модуля spandsp. Для описания установки используется Centos 6.6-i386 и Asterisk 11.7.0

1. Нам понадобится проверенный дистрибутив asterisk с исходными кодами, желательно который уже собирали (что бы не возникло смежных ошибок). Если вам ещё предстоит найти и подготовить исходные тексты asterisk к сборкею.

Итак, скачиваем исходники с сайта

[root@centostest asterisk-11.7.0]# cd /home/user
[root@centostest asterisk-11.7.0 user]# wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6pre21.tgz

Распаковываем для дальнейшей работы

[root@centostest asterisk-11.7.0 user]# tar -xzvf spandsp-0.0.6pre21.tgz

скорее всего нам понадобятся следующие библиотеки

[root@centostest asterisk-11.7.0 user]# yum install -y libtiff-devel

2. Конфигурируем и собираем модуль

[root@centostest asterisk-11.7.0 user]# cd spandsp-0.0.6
[root@centostest asterisk-11.7.0 spandsp-0.0.6]# ./configure --prefix=/usr/local
[root@centostest asterisk-11.7.0 spandsp-0.0.6]#  make
[root@centostest asterisk-11.7.0 spandsp-0.0.6]#  make install

Для 64-битных систем могут быть нюансы, т.к. там есть две папки с библиотеками lib и lib64, имейте ввиду!

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

[root@centostest asterisk-11.7.0 spandsp-0.0.6]# cat > /etc/ld.so.conf.d/spandsp.conf << EOF
/usr/local
/usr/local/lib
EOF

4. Следующим шагом будет сборка asterisk с поддержкой spandsp модуля

[root@centostest asterisk-11.7.0 spandsp-0.0.6]#  cd /home/user/asterisk-11.7.0
[root@centostest asterisk-11.7.0 asterisk-11.7.0]#  make distclean
[root@centostest asterisk-11.7.0 asterisk-11.7.0]# ./configure

запускаем конфигуратор компонентов asterisk

[root@centostest asterisk-11.7.0 asterisk-11.7.0]# make menuselect

в меню Resource Modules необходимо активировать два модуля
[*] res_fax
[*] res_fax_spandsp

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

Нажимаем ESC и выполняем сохранение конфигурации кнопкой S

Выполняем сборку и установку нового asterisk-а, предварительно перед этим выполнив его остановку service asterisk stop

[root@centostest asterisk-11.7.0 asterisk-11.7.0]#  make
[root@centostest asterisk-11.7.0 asterisk-11.7.0]#  make install

5. Запускаем новый Астериск

[root@centostest asterisk-11.7.0 asterisk-11.7.0]#  service asterisk start

заходим консольно

[root@centostest asterisk-11.7.0 asterisk-11.7.0]#  asterisk -rvv

Проверяем, загрузились ли модули

centostest*CLI> fax show capabilities

Нормальным результатом должен быть похожий ответ

Registered FAX Technology Modules:

Type : Spandsp
Description : Spandsp FAX Driver
Capabilities : SEND RECEIVE T.38 G.711 GATEWAY
1 registered modules

Если модули не найдены, попробуйте сначала их загрузить и перегрузить вручную

centostest*CLI> module reload res_fax.so
centostest*CLI> modeule load res_fax_spandsp.so

Электронная почта давно является основным способом обмена документами. Но после того, как я заменил во многих организациях в моем городе старые сименсы и панасы на Asterisk PBX, сталкивался с нежеланием отказываться от факсов(особенно в бюджетных организациях), и понятно — это быстрее и проще для сотрудника, чем возиться со сканером. Так как астер они ставили в основном вследствие расширения штата и с желанием сэкономить, то факсы для новых сотрудников необходимо также виртуализировать. С приемом факса на e-mail проблем возникнуть не должно, с простым и бесплатным способом отправки пришлось поломать голову.

На просторах интернета нашел простой способ отправки факса через веб-интерфейс FreePBX. Несложно настроить, работает на ура. Для активного использования факсов в крупном офисе вряд ли подойдет, но для небольшого офиса с небольшим факсовым трафиком или для новичков в астере или *nix — в самый раз.

Мы имеем виртуальную машина в небольшом офисе с Ubuntu 12.04 на борту. Установлен Asterisk 11 + FreePBX 2.11. Логинимся по ssh на сервер и приступаем.

1. Устанавливаем модуль факса. Также можно использовать модуль spandsp, в нем нет ограничений


Регистрируемся на сайте Digium, идем на  страницу модуля, жмем «Get 1 Free license» оформляем заказ, ждем письмо с кодом.
Отсюда скачиваем утилиту для регистрации нашего модуля, кладем в /tmp, отмечаем выполнение для владельца и запускаем.

cd /tmp
wget http://downloads.digium.com/pub/register/x86-32/register
chmod 500 register
./register


Вы увидите текстовое меню с приглашением для ввода:

Digium Product Registration - Version 3.0.5
Copyright (C) 2004-2007, Digium, Inc.
Use the '-l' option to see license information for software
included in this program.

Please select a category

1 - Digium Products
2 - Cepstral Products

0 - Quit
Your Choice:


Выбираем 1, затем 9, вводите ключ, который пришел на почту, соглашаетесь и заполняете данные.
Сам модуль берем тут, выбираем версию под свой сервер, забираем по ссылке внизу, распаковываем и кладем res_fax_digium.so в ваш ${ASTMODDIR}. Например, у меня

cd /tmp
wget http://downloads.digium.com/pub/telephony/fax/res_fax_digium/asterisk-11.0/x86-64/res_fax_digium-11.0_1.3.1-generic_64.tar.gz
tar -xvf res_fax_digium*
cd res_fax_digium*
cp res_fax_digium.so /usr/lib/asterisk/modules/

 

2. Скачаем нужные нам файлы и распакуем их во временный каталог.

 

cd /tmp && wget http://faxgui-ari-module.googlecode.com/files/faxgui-ari-module.tar.gz && tar xvf faxgui-ari-module.tar.gz

 

3. Копируем все на свои места и устаналиваем права.

 

cp faxgui-ari-module/sendfax.module /var/www/recordings/modules/ # проверьте ваш параметр %AMPROOT%
cp faxgui-ari-module/sendfaxnotify.php /var/lib/asterisk/bin/  # проверьте ваш параметр ${ASTVARLIBDIR}
chown asterisk:asterisk /var/www/recordings/modules/sendfax.module
chown asterisk:asterisk /var/lib/asterisk/bin/sendfaxnotify.php
dos2unix /var/lib/asterisk/bin/sendfaxnotify.php # перекодировка файла, установите пакет dos2unix

 

4. Создаем контекст для исходящих факсов в файле /etc/asterisk/extensions_custom.conf.

[outboundfax]
exten => s,1,Set(FAXOPT(filename)=${FAXFILE})
exten => s,n,Set(FAXOPT(ecm)=yes)
exten => s,n,Set(FAXOPT(headerinfo)=${FAXHEADER})
exten => s,n,Set(FAXOPT(localstationid)=${LOCALID})
exten => s,n,Set(FAXOPT(maxrate)=14400)
exten => s,n,Set(FAXOPT(minrate)=2400)
exten => s,n,SendFAX(${FAXFILE},d)
exten => s,n,System(${ASTVARLIBDIR}/bin/sendfaxnotify.php INIT "${EMAIL}" "${DESTINATION}" "${TIMESTAMP}" "NO_STATUS" "NO_PAGES")
exten => h,1,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})
exten => h,n,NoOp(FaxStatus : ${FAXSTATUS})
exten => h,n,NoOp(FaxStatusString : ${FAXSTATUSSTRING})
exten => h,n,NoOp(FaxError : ${FAXERROR})
exten => h,n,NoOp(RemoteStationID : ${REMOTESTATIONID})
exten => h,n,NoOp(FaxPages : ${FAXPAGES})
exten => h,n,NoOp(FaxBitRate : ${FAXBITRATE})
exten => h,n,NoOp(FaxResolution : ${FAXRESOLUTION})
exten => h,n,System(${ASTVARLIBDIR}/bin/sendfaxnotify.php NOTIFY "${EMAIL}" "${DESTINATION}" "${TIMESTAMP}" "${FAXSTATUSSTRING}" "${FAXPAGES}")
; end of outboundfax context

 

5. Перезапуск и проверка.

 

amportal restart


Идем в User Panel нашего сервера, ip_aster/recordings/, входим под любым пользователем, вводим пароль от голосовой почты. Слева появился пункт Send Fax. Проверяем отправку.

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

Вот и все, надеюсь, мой пост помог кому-либо с настройкой VoIP-сервера.
В будущем планирую регулярно описывать такие небольшие и тонкие моменты с настройкой.

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

hiousi.tumblr.com/post/2745684940/a-freepbx-ari-module-to-send-fax-from-the-user-portal
trentdev.blogspot.ru/2013/04/send-fax-using-asteriskfreepbx-with.html
www.digium.com/en/products/software/fax-for-asterisk
wiki.freepbx.org/display/ST/Faxing+and+T38

Небольшое дополнение
Сейчас настраивал отправку клиенту по своему мануалу, вспомнил еще несколько моментов.

1. Для поддежки PDF установите пакет ghostscript

aptitude install ghostscript # мой случай

2. Не забудьте про опции в sip.conf, либо в веб-интерфейсе

t38pt_udptl=yes,redundancy,maxdatagram=400
faxdetect=no

3. При проверке посмотрите лицензию в CLI

fax show licenses

Не регистрируйте несколько ключей на 1 ящик, чревато дальнейшей невалидностью