Как настроить DU.ae SIP Trunk в FreePBX
Для памятки опишу как настроить SIP транк от оператора du.ae (Дубаи) в FreePBX.
Для памятки опишу как настроить SIP транк от оператора du.ae (Дубаи) в FreePBX.
# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.
apt-get install build-essential linux-headers-`uname -r` apt-transport-https gnupg2 sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr -y
[stextbox id=’warning’]ВНИМАНИЕ. Желательно перезагрузить систему и после этого продолжить установку.[/stextbox]
# Устанавливаем PHP версии 7.4 (для корректной работы FreePBX fwconsole):
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list apt-get update && apt-get install php7.4 php7.4-curl php7.4-cli php7.4-common php7.4-mysql php7.4-gd php7.4-mbstring php7.4-intl php7.4-xml php-pear -y
# Устанавливаем NodeJS :
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - apt-get install nodejs -y
# Устанавливаем поддержку MariaDB ODBC
wget https://downloads.mariadb.com/Connectors/odbc/latest/mariadb-connector-odbc-3.1.9-debian-buster-amd64.tar.gz tar -zxvf mariadb* cp -v mariadb-connector-odbc-3.1.9-debian-buster-amd64/lib/mariadb/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
[stextbox id=’alert’]ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.[/stextbox]
Для памятки опишу как установить модуль chan_sccp в FreePBX на базе Asterisk 18.
Описывать конфиги и настройку не буду (по крайней мере на момент написания статьи), вся исчерпывающая информация тут — https://github.com/chan-sccp
Устанавливаем необходимые для успешной сборки пакеты и скачиваем chan_sccp:
apt-get install git build-essential make install-headers -y cd /opt/ git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp cd /opt/chan-sccp
Посмотрим какая версия Asterisk установлена, чтобы для нее сконфигурировать chan_sccp:
asterisk -rx "core show version"
Конфигурируем, компилируем и устанавливаем:
./configure --with-asterisk-version=18.7 make make install
После установки обязательно отключаем модуль chan_skinny.so и включаем chan_sccp.so в GUI FreePBX в модули Asterisk.
[stextbox id=’info’]ИНФОРМАЦИЯ. Немного актуализировал статью под новую версию Debian, чтобы установка из статьи проходила в режиме copy-paste без ошибок.[/stextbox]
Рассмотрим как установить FreePBX 14 в связке с Asterisk 18 на Debian 10 Buster.
Перед началом установки обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Устанавливаем необходимые зависимости:
apt-get install build-essential linux-headers-`uname -r` apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y
[stextbox id=’alert’]ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.[/stextbox]
Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):
curl https://packages.sury.org/php/apt.gpg | apt-key add - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y
Устанавливаем NodeJS :
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - apt-get install nodejs -y pear install Console_Getopt
Устанавливаем поддержку MariaDB ODBC
wget https://downloads.mariadb.com/Connectors/odbc/latest/mariadb-connector-odbc-3.1.9-debian-buster-amd64.tar.gz tar -zxvf mariadb* cp -v mariadb-connector-odbc-3.1.9-debian-buster-amd64/lib/mariadb/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
[stextbox id=’alert’]ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.[/stextbox]
Многие пользователи просили сделать возможность переадресации вызовов на мобильный при установке DND (do not disturb) режима на рабочем телефоне. Так как DND режим не предполагает переадресации, то пришлось свою обработку для этого режима.
В порядке рабочей необходимости поставилась задача по реализации динамических конференций на FreePBX. Из функционала должна быть возможность перевода активного разговора в конференцию, возможность приглашать новых участников в созданную динамическую конференцию находясь в ней, а так же возможность самостоятельному подключения к активной динамической конференции.
В качестве памятки опишу способ доработки функции второй линии (Call Waiting) в FreePBX 14.
Рассмотрим как установить FreePBX 14 в связке с Asterisk 16 на Debian 9 Stretch.
Перед началом установки обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Устанавливаем необходимые зависимости:
apt-get install build-essential linux-image-amd64 linux-headers-* apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y
[stextbox id=’alert’]ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.[/stextbox]
Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):
curl https://packages.sury.org/php/apt.gpg | apt-key add - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y
Устанавливаем NodeJS :
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - apt-get install nodejs -y pear install Console_Getopt
Устанавливаем поддержку MariaDB ODBC
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.15/mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz tar -zxvf mariadb* cp -v mariadb-connector-odbc-2.0.15-ga-debian-x86_64/lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
Столкнулся недавно с задачей по маршрутизации звонков между несколькими FreePBX соединенными SIP-транками. Необходимо вызов пришедший из одного SIP-транка на определенный номерной план передать в другой SIP-транк.
Имеется три АТС на базе FreePBX (13, 14) — FreePBX «A» (номерной план 1ХХ), FreePBX «B» (номерной план 2ХХ), FreePBX «C» (номерной план 3ХХ). Которые соединены между собой SIP-транками следующим образом:
FreePBX «A» <—-SIP TRUNK «A»—-> FreePBX «B» <—-SIP TRUNK «B»—-> FreePBX «C»
Для наглядности рассмотрим к примеру ситуацию когда необходимо дозваниваться с FreePBX «A» (1ХХ) до абонентов находящихся в FreePBX «С» (3ХХ) и в обратном направлении.
Можно конечно решить задачу соединив отдельным SIP-транком FreePBX «A» и FreePBX «С», но рассмотрим другой вариант, когда к примеру нет возможности соединить их на прямую, тогда в этом случае посредником для звонков будет выступать FreePBX «B», т.к. он имеет связь по SIP-транку с FreePBX «С» и FreePBX «A».
В работе имеется связка Asterisk 16.3.0 + FreePBX 14.0.11 и два SIP-провайдера. Задался вопросом как модифицировать/изменить номер телефона (CallerID) при входящем звонке, устанавливая префикс 8 в любом случае. Мне нужно это для удобства обратного набора, на поступивший внешний звонок.
В моем случае один SIP-провайдер отдает номер телефона с префиксом 7, прим. 7800-800-80-80 (7XXXXXXXXXX), а другой вообще без префикса, прим. 800-800-80-80.
Чтобы исправить это, нам необходимо немного модифицировать dialplan, внеся в файл конфигурации /etc/asterisk/extensions_custom.conf
следующий код:
[from-pstn-custom] exten => _X.,1,ExecIF($[${VALID_EXTEN(fix-cid,${CALLERID(num)})}]?Gosub(fix-cid,${CALLERID(num)},1)) [fix-cid] ; Входящий номер с кодом 7 exten => _7XXXXXXXXXX,1,Set(CALLERID(num)=8${CALLERID(num):1}) exten => _7XXXXXXXXXX,n,Return() ; Входящий номер без кода страны exten => _XXXXXXXXXX,1,Set(CALLERID(num)=8${CALLERID(num)}) exten => _XXXXXXXXXX,n,Return()
Появилась интересная задача, которая заключается в том что нужно подключить GSM-модем USB HUAWEI E1550 к Asterisk 13 работающий на Debian 8 Jessie. Настроить возможность принимать/отправлять SMS, принимать/звонить с номера находящегося в GSM-модеме.
Рассмотрим как выполнить установку из исходников Asterisk 16 на Debian 9 Stretch.
Перед началом установки обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Устанавливаем необходимые зависимости:
apt-get install linux-headers-amd64 gcc make autoconf libtool libical-dev pkg-config default-libmysqlclient-dev -y
Скачиваем исходники (dahdi, libpri, libstrp, asterisk) и распаковываем их:
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz tar -zxvf dahdi-linux-complete-current.tar.gz tar -zxvf libpri-current.tar.gz tar -zxvf v2.2.0.tar.gz tar -zxvf asterisk-16-current.tar.gz
Используя в работе голый Asterisk, рано или поздно становится недостаточно стандартных инструментов, для решения нужных задач. В этом случае нам поможет интерфейс AGI, который позволяет Asterisk взаимодействовать со сторонними приложениями, к примеру с приложением написанным на PHP.
Рассмотрим как настроить взаимодействие Asterisk с классом phpagi, посредством интерфейса AGI (Asterisk Gateway Interface).
[stextbox id=’info’]Все ниже действия будут производится на Debian 8 Jessie, Asterisk 13 и версией PHP — 5.6. Хочу обратить внимание что ниже описанное так же будет применимо к FreePBX[/stextbox]
Для подключения класса phpagi, в конфигурационный файл (/etc/asterisk/manager.conf), добавляем параметры подключения его (прим. astphp):
Рассмотрим такую технологию как BLF
(Busy Lamp Field) — индикатор занятости линии.
Имея телефонный аппарат с поддержкой функции BLF (Busy Lamp Field) и развернутый Asterisk 13, можно реализовать функцию контроля абонентов в реальном времени (занят/свободен) и быстрый вызов абонента, нажатием одной клавиши на телефонном аппарате.
Выполним настройку поддержки функции BFL в АТС Asterisk 13.
В файле описания плана набора extentions.conf
, добавим правило обработки BFL:
; Busy Lamp Functionality [BLF] exten => _XXXX,hint,SIP/${EXTEN}
Небольшой скрипт на bash
для определения названия агентов подключенных к Asterisk. По работе было необходимо, но решил оставить это здесь, вдруг кому тоже пригодится.
Рассмотрим как подключить Asterisk 13 к MySQL посредством ODBC (Open Database Connectivity) для ведения записей CDR (Call Detail Records) и CEL (Channel Event Logging).
До версии Asterisk 13, для хранения CDR и CEL в MySQL использовал драйвер cdr_mysql.so и cel_mysql.so. Начиная с Asterisk 13 эти модули Deprecated (Устарели) и не рекомендованы к использованию. Разработчики рекомендуют использовать технологию ODBC.
Исходные данные:
На развернутом Asterisk 13, во время звонка (входящего\исходящего) в консоли и в логах наблюдаю вывод множественных предупреждений вида:
[Jan 27 11:59:26] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005 [Jan 27 11:59:27] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005 [Jan 27 11:59:28] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005 [Jan 27 11:59:28] WARNING[30698][C-00000001]: ast113.c:869 sccp_wrapper_asterisk113_rtp_write: SEP10F311B61D8A: Can't send 10 type frames with SCCP write on channel SCCP/555-00000005
Данные предупреждения возникают не зависимо от того какой протокол связи используется. Предупреждения никак не влияют на текущее соединение, абоненты слышат друг друга, все работает. Только забивается лог этими предупреждениями.
Рассмотрим как выполнить базовую настройку SIP АТС — Asterisk. В примере будет использоваться Asterisk 13 (как установить его можно ознакомится тут). Так же в примере будут рассмотрены основные моменты в настройке, для понимания принципа как все устроено.
(Статья в процессе написания и будет дополнятся)
Прежде чем начать, выполним резервное копирование файла конфигурации /etc/asterisk/sip.conf:
cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
Разберем как выполнить установку Asterisk 13 в связке с FreePBX 13 и с поддержкой протокола SCCP на Debian 8 Jessie/Ubuntu 14.04 Trusty Tahr.
Переходим в режим работы под root:
sudo su
Перед началом установки обновляем систему до актуального состояния:
apt-get update && apt-get upgrade -y
Устанавливаем необходимые зависимости:
apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libmyodbc -y
Перезагружаем систему:
reboot
После перезагрузки, не забываем снова войти под root.
По-умолчанию, для оповещений системы, которые слышит пользователь в трубке, не установлен русский язык. Разберем как поставить русский язык, чтобы слышать оповещения системы на родном языке.
Звуковые файлы Asterisk, располагаются — /var/lib/asterisk/sounds.
Скачиваем русские голосовые оповещения:
wget http://jakondo.ru/wp-content/uploads/file-manager/Asterisk/asterisk-core-sounds-ru-alaw-current.tar.gz
Создаем каталог для их размещения и распаковываем:
mkdir -P /var/lib/asterisk/sounds/ru tar -zxvf asterisk-core-sounds-ru-alaw-current.tar.gz -C /var/lib/asterisk/sounds/ru