Asterisk 13 chan_dongle (E1550) на Debian 8 или Ubuntu 16.04. Установка

Автор: | 22.10.2018

Данная инструкция описывает процесс установки телефонной системы Asterisk с модулями DAHDI, LibPRI, PJSip, SpanDSP, chan_dongle и дополнительными кодеками Opus и g729. Никаких WEB-интерфейсов и прочих утилит для конфигурирования и мониторинга системы данная инструкция не предусматривает. Это связано с тем, что автору приходилось неоднократно разбираться с конфигурационными файлами, сгенерированными автоматически при помощи FreeBPX и прочих подобных систем, что вызывало у автора сильную ненависть к подобным оболочкам. Поэтому, друзья, настраивайте все руками в конфигурационных файлах. Это не так сложно, зато работает как часы и разобраться намного проще.
Disclamer

Автор предупреждает читателей, о тонкой грани между допустимым использованием телефонных систем подобного рода и уголовной ответственностью, которая может наступить при неправильной маршрутизации телефонного трафика (рефайлинг). Пожалуйста, ознакомьтесь с законодательством Вашей страны, чтобы избежать проблем. Автор снимает с себя ответственность за любые действия читателя, в которых ему может помочь материал данной статьи и возлагает ее целиком и полностью на читателя данной статьи. Информация, приведенная в данной статье, является справочной и не носит практического характера.
Входные данные

Для написания статьи я создал тестовый виртуальный сервер под управлением Debian 8.4. Во время установки было выбрано следующее программное обеспечение: SSH-сервер и Стандартные системные утилиты. В боевой конфигурации рекомендуется выделить отдельный раздел диска для файлов записей разговоров, если это необходимо.

Важное замечание: производите все действия по установке под учетной записью суперпользователя root. Не используйте sudo, так как это вызывает ошибки в некоторых случаях. Пожалуйста, не игнорируйте это замечание. Вы можете использовать команду

либо разрешите на время установки доступ пользователю root через ssh, для чего в файле /etc/ssh/sshd_config установите параметр

и перезапустите ssh-сервер

Установка зависимостей

Это все одна длинная строка. Дважды щелкните по блоку ниже и скопируйте текст целиком.

libmyodbc – удалил, т.к. не находит.

После этой процедуры желательно перезагрузить сервер.

Установка DAHDI

Внимание! В большинстве инсталляций Вам не пригодится этот модуль. Он необходим только если у Вас есть оборудование, подключенное к данному серверу, которое взаимодействует с телефонной сетью посредством E1, T1 и т.п. Это разного рода PSTN/DAHDI-платы.

Установка LibPRI

Установка PJSip

PJSIP мультимедийная библиотека с открытым кодом, для реализации протоколов SIP, SDP, RTP, STUN, TURN и ICE. Она сочетает лучшие возможности SIP сигнализации, хорошую проходимость NAT и высокий уровень взаимодействия с приложениями. Подходит практически для любого типа систем, начиная от компьютеров и заканчивая встраиваемыми системами (embedded systems) и мобильными телефонами. Подробнее.

Скопируйте ссылку на загрузку последней версии с сайта http://www.pjsip.org/download.htm и используйте в команде wget ниже

Установка SpanDSP

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

Так как последняя версия spandsp была выпущена достаточно давно, то можно без проблем установить его из репозитория Debian

Либо же загрузите последнюю версию для установки вручную

Установка Asterisk 13

Далее в конфигурационном меню необходимо выбрать по необходимости следующие компоненты:

Add-ons: format_mp3
Core Sound Packages: CORE-SOUNDS-EN-(WAV, ALAW, GSM, G729, G722), CORE-SOUNDS-RU-(WAV, ALAW, GSM,G729, G722)
Extras Sound Packages: WAV, ALAW, GSM, G729 и G722

Продолжаем установку. (процесс make занимает достаточно много времени)

Если это первая установка или у Вас еще нет базовых конфигурационных файлов, Вы можете их установить, выполнив make samples. Если Вы не понимаете, о чем идет речь, однозначно устанавливайте.

Установка кодека G729

Если кодек g729 не нужен — смело пропускаем.

G729 — узкополосный речевой кодек (вокодер), который применяется для эффективного цифрового представления узкополосной телефонной речи (сигнала телефонного качества).

Для начала нужно узнать, какой процессор используется в Вашем сервере

grep -E ‘model name|flags’ /proc/cpuinfo

Внимание! Перед тем, как скачивать кодек, откройте сайт http://asterisk.hosting.lv/, выберите подходящий под систему и процессор кодек, скопируйте ссылку на его загрузку и используйте именно эту ссылку в команде ниже! Это крайне важно!

После установочная настройка

На этом основная установка системы окончена. Запустите Asterisk и убедитесь, что все в порядке

Если планируется использовать USB-модемы, то Asterisk желательно запускать от имени группы dialout, чтобы он имел доступ к устройствам USB.

Задаем права на каталоги:

Если Вы установили базовые конфигурационные файлы, то по умолчанию в них сконфигурирован английский язык (это влияет на речевые информаторы). Если желаете, можете изменяем язык на русский во всех файлах

В файле /etc/default/asterisk раскомментируем две строчки и изменяем название группы

Запускаем Asterisk и смотрим, от какого пользователя он запустился

Установка chan_dongle

Модуль chan_dongle необходим для работы с модемами Huawei:

K3715
E169 / K3520
E155X
E175X
K3765

Описываемая в данной статье версия является форком основного проекта, но основной проект не развивается с 2013 года и поддерживает только Asterisk 11. Впрочем, есть еще один форк той версии, что используется в данной статье. В связи с этим гарантировать работу модуля невозможно. Со списком известных багов можно ознакомиться по этой ссылке, но не ожидайте, что автор их исправит, так как этот список не обновлялся с 2011 года. Даже сам автор предупреждает, что модуль работает как попало и может назвонить вам куда нибудь и тем самым сожрать все ваши деньги или натворить еще что-то. Так что пожалуйста, прежде чем читать дальше, еще раз подумайте, стоит ли связываться с этим модулем. На сегодняшний день это единственный модуль, способный заставить дружить недорогие GSM-модемы с Asterisk и, скорее всего, у Вас нет выбора.

This channel driver is in alpha stage.
I am not responsible if this channel driver will eat your money on your SIM card or do any unpredicted things.

Модемы должны быть разлочены, проверка PIN-кода на SIM-карте должна быть отключена. Также необходимо обязательно отключить на модемах функции CR-ROM и CARDREADER, оставив модем только в режиме модема. Для этого необходимо подключиться к модему консолью и дать следующую АТ-команду:

Также желательно отключить на модеме ожидание вызова:

Установите необходимые для сборки chan_dongle пакеты

Далее загружаем форк chan_dongle под Asterisk 13, разархивируем, собираем, устанавливаем. Не обращаем внимание на строчку «automake: error: no ‘Makefile.am’ found for any configure output» — это не является ошибкой

Копируем конфигурационный файл dongle.conf

Перезапускаем Asterisk, смотрим, загрузился ли модуль

Далее необходимо сделать так, чтобы модемам при подключении назначался верный владелец (чтобы Asterisk имел к ним доступ). Для этого создадим файл /etc/udev/rules.d/92-dongle.rules со следующим содержимым

Затем перезапустим службу udev

Теперь при подключении устройства типа ttyUSB, система автоматически назначит ему владельца asterisk и группу dialout.
Идентификация по IMSI или IMEI

В Файле /etc/asterisk/dongle.conf описываются все устройства. Синтаксис файла — общепринятый в Asterisk. Например, я опишу модем, в котором установлена SIM-карта оператора Киевстар:

Идентификация устройства производится по imsi и imei. Можно идентифицировать устройство только по одному из параметров. imsi — это идентификатор SIM-карты, imei — это идентификатор терминала. Если Вам важно идентифицировать устройства по SIM-картам, тогда Вы можете указать только imsi номера этих SIM-карт (написаны на картах), если же важно идентифицировать по терминалам, тогда указывайте imei терминала (написан на модеме).

Все входящие вызовы с такого устройства будут обработаны контекстом from-dongle из файла extensions.conf или extensions.ael.

Исходящие вызовы через данный модем необходимо направлять на Dongle/Kievstar

Также в описании устройства можно указать exten=+380123456789. В таком случае все входящие вызовы будут иметь указанный exten. В некоторых случаях это возможно понадобится.
Если идентификация по IMEI / IMSI не работает

В последней версии chan_dongle обнаружение устройств выполняется либо по идентификатору терминала (модема) — IMEI, либо по идентификатору абонента (SIM-карты) — IMSI. Если же по каким-то причинам Вам необходимо идентифицировать устройство по порту USB-контроллера, то используйте расширенную конфигурацию udev для присвоения псевдонимов портам, а затем эти псевдонимы можно использовать для определения модемов в dongle.conf.

Для привязки модемов по номеру порта контроллера USB, нужно определить адреса этих портов. Извлеките все модемы из сервера, затем запустите

Вставляйте по одному модему и записывайте адреса портов контроллера, которые относятся к каждому из них. Затем в файл /etc/udev/rules.d/92-dongle.rules допишите псевдонимы для каждого из модемов, указав адреса контроллеров в качестве ID, подобно следующему:

Как видно из примера, необходимы только два порта, вместо четырех.

Теперь в файле /etc/asterisk/dongle.conf вместо идентификации по IMEI и/или IMSI укажите идентификацию по портам USB следующим образом:

Однако этот метод определения модемов не является рекомендуемым, т.к. при случайной смене USB-порта либо вообще ничего не будет работать, либо Ваши вызовы пойдут не туда куда планировалось. Настоятельно рекомендуется использовать идентификацию по IMEI / IMSI.

Далее переносим конфиги из бэкапа со старого сервера путем запуска nautilus из терминала запущенного под root.

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

Cоздаем папки:

/bcp с правами 755

/var/calls с правами 777

далее делаем reboot сервера и проверяем работоспособность.

После установки астериск в большинстве случаев перестает работать MariaDB, для устранения необходимо выполнить переустановку.

MariaDB

Всегда отвечаем Да.

далее делаем reboot сервера и проверяем работоспособность.

На этом установка полностью завершена.