Ip телефония asterisk с нуля. АТС на базе Asterisk®. Виды работ по настройке телефонии производимые нашими специалистами
Эра технологий - Информационный сайт
  • Главная
  • Аксессуары
  • Ip телефония asterisk с нуля. АТС на базе Asterisk®. Виды работ по настройке телефонии производимые нашими специалистами

Ip телефония asterisk с нуля. АТС на базе Asterisk®. Виды работ по настройке телефонии производимые нашими специалистами

Что такое IP-АТС Asterisk, как это работает, варианты использования и перспективы

О. Терещенко

На сегодняшний день покупать обычную или цифровую АТС в небольшой офис или Call-центр не выгодно. На смену традиционной телефонии пришла IP-телефония, которой свойственна низкая стоимость звонка, легкость развертывания, простота конфигурирования, масштабируемость и безопасность соединения.

IP АТС - телефонная станция, обеспечивающая передачу голоса через Интернет (на основе протокола Voice over IP).

В этой статье расскажем об IP-телефонии, организованной на базе программной IP АТС « Asterisk ».

IP АТС Asterisk на сегодня - лучшее решение для организации офисной телефонии и недорогого call-центра. Это программный продукт класса Open Source - свободное ПО с открытым кодом. За счет уникального сочетания множества функций Asterisk занимает лидирующие позиции среди платформ для создания офисной телефонии. Немаловажную роль играет и цена. Стоимость IP-телефонии офиса на платформе Asterisk в разы ниже стоимости решений на традиционных IP АТС - Panasonic, Samsung и др.

Аппаратная часть

Asterisk поддерживает любое оборудования для Voice over IP (VoIP). Устройства различных производителей VoIP-оборудования можно подключать без особых проблем.

Функциональные возможности

Asterisk обладает всеми возможностями классической АТС, поддерживает множество VoIP протоколов и предоставляет функции голосовой почты, конференций, интерактивного голосового меню (IVR), центра обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы), запись CDR и прочие функции. Asterisk не имеет ограничений по числу абонентов, каналов и функциональных возможностей.

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

Реализация

1. Начнем с того, что Asterisk устанавливается на Linux.

Первый вопрос - какой вариант реализации выбрать. Собственно, главный выбор - «плоский» Asterisk, управляемый через командный интерфейс (с помощью командной строки),

или система «Asterisk» с Web-интерфейсом (их, как уже упоминалось, написано достаточное количество).

Первый вариант предполагает больше гибкости и более широкие возможности, а второй - более простую настройку и управление.

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

2. Второй практический вопрос, который надо решить - какую платформу выбрать для использования Asterisk. Вариантов два: локальный сервер или «облако»?

Локальный сервер для IP-АТС в современных условиях, может обойтись почти бесплатно: допустим имеются старые (или не очень старые) компьютеры. Нужно всего: 2 GB ОЗУ и один процессор (можно даже какой-то старый и не очень мощный).

Но - внимание : если старый компьютер совсем уж барахло…То такой сервер может вас подвести, отказав в самый неподходящий момент. И тогда эффект экономии денег компании может оказаться совершенно обратным.

На сегодняшний день стоимость системного блока компьютера для развертывания IP - АТС в офисе не превышает $200.

Итак, вопрос с сервером либо решен, либо -направляемся «в облака».

Виртуальная АТС

Очевидный плюс облака - за надежность работы отвечает облачный провайдер и не надо тратить деньги на сервер. Ежемесячная плата за виртуальный «сервер» из одного ядра и 2 GB ОЗУ будет не высокой: около 1000 руб (или даже меньше). Также можно использовать облачную АТС (эксплуатация виртуального сервера и облачной АТС имеет незначительную разницу).

Немного о «подводных камнях» виртуальной АТС

Операторы телефонии предлагают разные условия использования своих облачных АТС. Есть ограничения. Это могут быть ограничения на количество внутренних номеров, всевозможные функциональные особенности. Например, не все такие системы предоставляют возможность записи разговоров, не все типы IP-телефонов обслуживаются, иногда страдает качество связи.

Существует набор ограничений, общий для виртуальных АТС всех телефонных операторов. Заключается он в следующем: виртуальные АТС не допускают одновременного подключения других телефонных операторов или перехода на другого оператора. Поэтому вы не сможете оптимизировать расходы, автоматически выбирая тарифы для конкретных соединений, или использовать другого оператора с текущей виртуальной АТС.

Т.е. телефонный оператор с помощью своей виртуальной АТС может на начальном этапе предоставить решение вопросов телефонии. Но при этом будет поставлен серьезный барьер на пути дальнейшего развития коммуникаций вашей компании.

Еще стоит обратить внимание на ситуацию, в которой одному внутреннему абоненту необходимо позвонить другому внутреннему абоненту. В этом случае разговор абонентов будет проходить по «большому кругу», то есть от аппарата внутреннего Абонента 1 сигнал пройдёт до маршрутизатора офиса с выходом во внешнюю сеть (на котором должны быть открыты соответствующие порты, что в свою очередь увеличивает «площадь атаки», поскольку требуется открывать SIP-порты для каждого аппарата), прийти на виртуальный сервер IP-АТС (облачную АТС), расположенный в некоем дата-центре, после чего вернётся на исходный маршрутизатор и из внешней линии будет отправлен на внутреннюю на аппарат внутреннего Абонента 2. Длинный путь не правда ли? А если таких соединений больше десятка?

Безопасность может стать проблемой, поскольку один внутренний абонент, разговаривая с другим внутренним абонентом, будет выходить во внешнюю сеть. Такую структуру часто взламывают и «прокачивают» через него звонки, скажем, из Нигерии в Палестину - на дорогие платные номера, причем по всем доступным каналам. За ночь ваша компания может потерять огромную сумму, и хорошо, если телефонный провайдер ввел ограничения для таких случаев, тогда потери будут не столь существенными. Вообще любой видимый в интернете SIP-порт (о необходимости открытия которых я говорил выше) подвергается атакам уже через несколько минут после появления, поэтому вопросы защиты должны прорабатываться тщательно и профессионально, поскольку чем больше портов открыто, тем больше «площадь атаки».

При этом «траффик», проходящий между внутренними абонентами, необходимо шифровать, поскольку в этом варианте все разговоры между внутренними абонентами не составит большого труда прослушать (перехватить).

IP -АТС c использованием сервера


В случае использования «своего» сервера (расположенного внутри сети) картина будет другой.

Свой сервер:

Минимизирует «площадь атаки» (поскольку сокращает количество открытых портов);

Позволяет исключить саму возможность прослушать (перехватить) переговоры внутренних абонентов или подключиться стороннему абоненту от имени внутреннего, даже если имеются удалённые офисы (поскольку внутренние абоненты разговаривают между собой, не выходя во «внешнюю сеть»);

Несмотря на развитие различных систем обмена информацией, таких как электронная почта и службы мгновенного обмена сообщениями, обычный телефон еще долго будет оставаться самым популярным средством связи. Ключевым событием в истории телекоммуникаций и интернета стало появление технологии передачи голоса поверх IP-сетей, поэтому за последние годы изменилось само понятие телефона. Использование VoIP современно, удобно, дешево, так как можно объединить удаленные офисы, даже не прибегая к услугам операторов телефонной связи. Какие еще доводы нужны для того, чтобы поднять свой сервер IP-телефонии?

Проект Asterisk

Asterisk присутствует в репозитариях пакетов большинства дистрибутивов. Так, в Ubuntu команда sudo apt-cache search Asterisk выдает приличный список пакетов, после установки которых сразу же можно приступать к настройке. Но установка из репозитария имеет один минус - как правило, в нем версия Asterisk прилично отстает от текущей, которую можно скачать с официального сайта. Поэтому рассмотрим универсальный способ установки на примере того же Ubuntu, хотя все сказанное (за редким исключением) относится и к остальным дистрибутивам.

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

$ sudo apt-get install build-essential automake
autoconf bison flex libtool libncurses5-dev libssl-dev

Кроме того, настоятельно рекомендуется установить библиотеку libpri, даже если не нужна поддержка Primary Rate ISDN (первичный тип цифровой сети с интеграцией услуг). Это можно сделать либо через репозитарий: sudo apt-get install libpri1.2, либо используя исходные тексты:

$ wget -c downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz

Компиляция библиотеки стандартна, поэтому не будем на этом останавливаться.

Теперь скачиваем с сайта исходные тексты Asterisk и конфигурируем:

$ wget -c downloads.digium.com/pub/Asterisk/Asterisk-1.4.11.tar.gz
$ tar xzvf Asterisk-1.4.11.tar.gz
$ cd Asterisk-1.4.11
$ ./configure --prefix=/usr

По окончании работы скрипта в консоли мы увидим эмблему проекта и некоторую информацию о настройках.

$ make
$ sudo make install

Примечание: если производится установка версии 1.2, то для поддержки формата mp3 перед командой make следует ввести «make mpg123», версия 1.4 уже никак не реагирует на эту команду.

После компиляции, помимо всего прочего, будут установлены следующие исполняемые файлы:

  1. /usr/sbin/Asterisk - демон сервера Asterisk , который и обеспечивает всю работу;
  2. /usr/sbin/safe_Asterisk - скрипт для запуска, перезапуска и проверки работы сервера Asterisk ;
  3. /usr/sbin/astgenkey – скрипт для создания закрытого и публичного RSA ключей в формате PEM, которые необходимы для работы Asterisk .

Чтобы установить шаблоны конфигурационных файлов и документацию, набираем:

$ sudo make samples

Примеры конфигурационных файлов будут скопированы в /etc/Asterisk . Если в этом каталоге уже находятся файлы конфигурации, они будут переименованы с префиксом «.old». Для сборки документации потребуется пакет doxygen, если его нет, устанавливаем:

$ sudo apt-get install doxygen
$ sudo make progdocs

Аналогично ставим и пакет с расширениями Asterisk -addons (этот шаг не обязательный, его можно смело пропустить). Многие модули, входящие в состав этого набора, являются экспериментальными. Их стоит устанавливать, только если требуется запись информации в БД, поддержка mp3-файлов и протокола ooh323c (Objective Systems Open H.323 for C):

$ wget -c downloads.digium.com/pub/Asterisk/Asterisk-addons-1.4.2.tar.gz
$ tar xzvf Asterisk-addons-1.4.2.tar.gz
$ cd Asterisk-addons-1.4.2
$ ./configure; make; sudo make install; sudo make samples

Установка Asterisk закончена. Сначала рекомендуется запустить сервер в отладочном режиме и просмотреть вывод на наличие ошибок:

$ sudo /usr/sbin/Asterisk -vvvgc

Если получаем сообщение «Asterisk Ready» и приглашение консоли управления, значит все в порядке. Выходим:

*CLI> stop now

Теперь можно переходить к дальнейшей настройке.

Настройка поддержки интерфейсных карт

Если планируется подключение сервера Asterisk с помощью специальных интерфейсных плат к обычным телефонным сетям, следует позаботиться о наличии соответствующих драйверов, реализованных в виде модуля ядра. Но даже если таких устройств в компьютере нет, эти драйверы все равно рекомендуется установить. Дело в том, что во всех Zaptel-устройствах есть таймер, и для полноценной работы сервера IP-телефонии он является необходимым. Но если Zaptel-устройства под рукой нет, для его эмуляции можно использовать специальный драйвер - ztdummy.

Из репозитария устанавливаем пакеты zaptel, zaptel-source и собираем модули под свою систему:

$ sudo apt-get install zaptel zaptel-source
$ sudo module-assistant prepare
$ sudo m-a -t build zaptel

В /usr/src появится пакет zaptel-modules-*_i386.deb, устанавливаем его с помощью dpkg. После этого проверяем работу модулей ядра:

$ sudo depmod -a
$ sudo modprobe ztdummy

И если нужна поддержка устройств:

$ sudo modprobe zaptel
$ sudo modprobe wcfxo

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

$ echo "ztdummy\nzaptel\nwcfxo" >> /etc/modules

Создаем правила для UDEV:

$ sudo mcedit /etc/udev/rules.d/51-zaptel.rules

KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"
KERNEL="zapchannel", NAME="zap/channel"
KERNEL="zappseudo", NAME="zap/pseudo"
KERNEL="zap0-9*", NAME="zap/%n"

Также можно использовать исходные тексты или CVS-версию драйвера. При самостоятельной компиляции понадобятся заголовочные файлы ядра (или исходные тексты):

$ sudo apt-get install linux-headers-`uname -r`

$ sudo ln -s /usr/src/linux-headers-2.6.20-15-generic /usr/src/linux-2.6

Теперь получаем последнюю версию драйверов:

$ cd /usr/src
$ wget -c downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz

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

$ tar xzvf zaptel-1.4-current.tar.gz
$ cd /usr/src/zaptel-1.2.17.1
$ ./configure
$ make
$ sudo make install

И чтобы вручную не создавать конфигурационные файлы:

$ sudo make config

После этой команды будет создан скрипт для автоматического запуска модулей, входящих в состав Zaptel, и конфиг /etc/default/zaptel (или /etc/sysconfig/zaptel), в котором будет указано, какие модули необходимо загружать. Рекомендую в этом файле оставить только необходимое. Пробуем загрузить модуль:

$ sudo modprobe ztdummy
$ lsmod | grep ztdummy
ztdummy 6184 0
zaptel 189860 1 ztdummy

Все нормально. После установки в системе появятся еще два файла:

  1. /etc/zaptel.conf – описывает конфигурацию аппаратного обеспечения;
  2. /etc/Asterisk/zapata.conf - настройки сервера Asterisk для работы драйвера Zap-канала.

Подробные указания для всевозможных устройств даны в документации. На русском по этому поводу можно почитать в документе «Asterisk%0A+config+zaptel.conf">Конфигурация драйвера ядра Zaptel ». Но на этом не останавливаемся, впереди у нас еще много работы. После настройки проверяем работу командой ztcfg -vv.

Регистрация пользователей

Если теперь посмотреть в каталог /etc/Asterisk , можно обнаружить большое количество файлов. Но размер журнальной статьи позволит нам познакомиться только с некоторыми из них. Так, в Asterisk .conf указаны каталоги, которые будет задействовать Asterisk во время работы, расположение и владелец сокета, используемого для подключения удаленной консоли управления, а также дефолтные параметры запуска сервера. Некоторые каталоги во время установки не создаются, это придется сделать вручную:

$ sudo mkdir -p /var/{run,log,spool}/Asterisk
$ sudo adduser --system –-no-create-home Asterisk
$ sudo addgroup --system Asterisk

Добавим пользователя Asterisk в группу audio:

$ sudo adduser Asterisk audio
$ sudo chown Asterisk:Asterisk /var/run/Asterisk
$ sudo chown -R Asterisk:Asterisk /var/{log,spool}/Asterisk

Дальше нас интересует файл sip.conf, где определяются серверы и клиенты SIP, с которыми будет дружить наш Asterisk . Каждый из них представлен в файле отдельным блоком, который начинается с оглавления, заключенного в квадратные скобки. Параметров в sip.conf довольно много, ограничимся лишь добавлением SIP-аккаунта:

$ sudo mcedit /etc/Asterisk/sip.conf


type=friend
host=dynamic
; defaultip=192.168.1.200
username=grinder
secret=password
language=ru
nat=no
canreinvite=no
context=office
callerid=grinder <1234>
[email protected]
; перед использованием параметра allow следует отключить все кодеки
disallow=all
; порядок следования кодеков не имеет значения
allow=ulaw
allow=alaw

Поле type указывает, что может делать этот клиент. При значении user ему будет разрешено только принимать входящие звонки, при peer он сможет только звонить, а friend означает все действия сразу, то есть user+peer. В поле host указывается IP-адрес, с которого разрешено подключение этого клиента. Если он может подключаться с любого адреса, указываем host=dynamic. А чтобы в этом случае вызвать клиента, когда он еще не зарегистрирован, в defaultip следует записать IP-адрес, по которому его всегда можно будет найти. В username и secret указываем логин и пароль, используемые клиентом при подключении. Параметр Language задает код языка приветствий и специфичные настройки сигналов телефонов,
которые определены в файле indications.conf. При работе клиента за NAT"ом в соответствующем поле необходимо установить значение yes. Отключение canreinvite заставляет весь голосовой RTP-трафик проходить через Asterisk . Если клиенты поддерживают SIP re-invites, им можно разрешить соединяться напрямую, указав canreinvite=yes. Поле сontext определяет план набора, в который попадают вызовы, поступающие от этого клиента, а callerid - строку, которая будет выводиться при звонке от клиента. По умолчанию используется контекст default, который берет все настройки из контекста demo. Последний предназначен исключительно для демонстрационных целей, в рабочей системе необходимо создать свой контекст.
Поле mailbox указывает на голосовой ящик 1234 в контексте office. Остальные клиенты настраиваются аналогично.
После определения SIP-аккаунтов наши клиенты могут регистрироваться на сервере Asterisk и совершать исходящие вызовы. Чтобы у них была возможность принимать звонки, следует обратиться к файлу extensions.conf, в котором описывается план набора (Dialplan), распределяющий звонки в системе. Здесь же указываются все разрешенные расширения.

$ sudo mcedit /etc/Asterisk/extensions.conf


include => default
exten => 1234,1,Dial(SIP/grinder,20)
exten => 1234,2,Voicemail(grinder)

Здесь все просто. За пользователем grinder закрепляем номер 1234, и, если он не ответит на звонок, ему можно будет оставить сообщение в голосовой почте. Цифра после номера означает приоритет, который определяет последовательность выполнения задач. Теперь, если Asterisk запущен, следует подключиться к его консоли, выполнив на той же машине Asterisk -r, и с помощью команды reload заставить его перечитать конфигурационные файлы. Есть и команды для перезагрузки конкретного файла. Например, план набора перечитывается командой extensions reload.

Сервер готов к приему клиентов. По адресу Asterisk%0AAsterisk%0A_softphone.html">www.Asterisk guru.com/tutorials/configuration_Asterisk _softphone.html выбираем себе софт-клиент и пробуем соединиться. Мне, например, нравится бесплатная версия простой и понятной в использовании программы ZoIPer (ранее Idefisk). Есть версии для Linux, Windows и Mac OS X. Еще один неплохой и также мультиплатформенный клиент - X-Lite .

Если все нормально, в консоли должно появиться сообщение вроде «Registered SIP "grinder" at 192.168.0.1 port 5060», набираем номер и звоним.

Мы настроили Asterisk в минимальной конфигурации, но это далеко не все, что он может. За кадром осталось подключение к другому серверу IP-телефонии, парковка вызова, музыка во время ожидания, биллинг, использование GUI для администрирования сервера и прочее, но мы постараемся восполнить эти пробелы в следующих статьях.


Asterisk - это полноценная программная АТС. Она может работать на таких операционных системах, как Linux, BSD, Windows и OS X и предоставляет Вам все возможности, которые есть у обычной мини АТС и даже больше. Функционирование Asterisk основано на протоколах, которые обеспечивают передачу голоса через сети основанных на IP протоколе (VOIP) и, благодаря этому, данная АТС может работать практически с любым оборудованием для IP-телефонии, которые используют стандартные протоколы для VOIP, при этом используя относительно недорогое аппаратное обеспечение.

Asterisk предоставляет функции голосовой почты (Voicemail), конференций, интерактивного голосового меню (IVR), центра обработки вызовов и их обработки (Call Queuing). Он также имеет поддержку таких сервисов, как перевод вызовов другому абоненту, сервис определения и передачи вызываемому абоненту номера вызывающего абонента (callerID), протоколы ADSI, (как в режиме терминала, так и в режиме гейтования), (только для call manager) и SCCP/Skinny (не полностью). В разделе Возможности Вы можете найти более полный список функций, которые может выполнять Asterisk.

Asterisk не нуждается в дополнительном аппаратном обеспечении для реализации передачи голоса через IP сети (VOIP). Можно использовать единственного (или нескольких) провайдеров VOIP для входящих и/или вызовов (входящие и исходящие вызовы могут обрабатываться различными провайдерами Интернет и/или обычной телефонии)

Для обеспечения коммуникаций между цифровым и аналоговым телефонным оборудованием, Asterisk имеет поддержку некоторых аппаратных устройств, которые можно обозначить, как оборудование, производимое спонсором проекта Asterisk - Digium. Digium производит одинарные и счетверенные и интерфейсные платы для коммуникаций с каналами и . В дополнение, производятся интерфейсы, от одного до четырех портов на плату, для коммуникации с аналоговыми телефонными линиями и , которые популярны при построении небольшой АТС. Интерфейсные устройства других производителей могут быть использованы для организации каналов (ISDN2) с четырмя и восемью портами если они совместимые с CAPI или основаны на чипсете HFC.

И в заключение, для остального круга задач, включая наращивание FXO или FXS портов, можно использовать автономные устройства с FXO или FXS портами, которые можно просто подключить к IP сети и зарегистрировать их на Asterisk, как телефонные каналы.

Предыдущая стабильная версия Asterisk - Asterisk v1.2|1.2.40
Предыдущая стабильная версия Asterisk - Asterisk v1.4|1.4.41
Предыдущая стабильная версия Asterisk - Asterisk v1.6|1.6.2.16.1
Предыдущая стабильная версия Asterisk - Asterisk v1.8|1.8.2.1
Предыдущая стабильная версия Asterisk - Asterisk v11|11.25.1
Текущая стабильная версия Asterisk - Asterisk v13|13.15.0
Следующий (не стабильный) релиз сервера Asterisk - Asterisk 14|14.4.0
В разработке версия Asterisk - Asterisk 15

Начало

Вводная информация
: - С ЭТОГО МЕСТА ЛУЧШЕ ВСЕГО НАЧАТЬ! . сторонних разработчиков. FAQ и помощь в поиске решения: Ищите ответы на свои вопросы? Поищите и тут. Asterisk tips and tricks: Решения различных проблем и подсказки в вопросах, что же еще можно сделать при помощи этого программного обеспечения. Локальные информационные ресурсы в Вашем регионе. Новости, Статус проекта и история его развития. Списки рассылки Asterisk Linux 101 : Некоторая документация по Linux для начинающих (eng). Обзор не технических аспектов Asterisk - Основная информация и анализы (eng). Asteriskguru Tutorials Огромная коллекция документации по серверу asterisk (eng).
Аппаратное обеспечение
Asterisk phones: Телефоны, часто используемые для работы совместно с сервером Asterisk. : Аппаратное обеспечение, протестированное на совместимость с Asterisk. : Какая нужна процессорная мощность и какое количество одновременных вызовов выдержит система? Hardware use cases: Рекомендованное аппаратное обеспечение для различных нужд. : Поддержка Video в Asterisk. Asterisk text: Поддержка передачи текстовых сообщений в Asterisk. Asterisk legacy integration: Как соединить Asterisk и обычную АТС Asterisk Embedded Systems: Сервер Asterisk на простом (экзотическом) аппаратном обеспечении. Asterisk and VoIP GSM gateway: Как соединить VOIP GZM шлюз VoiceBlue с сервером Asterisk. Asterisk and Cable Modems with embedded ATAs: Как соединить embedded ATA с сервером Asterisk.
Администрирование
. : Какой процессор нужен, сколько одновременных вызовов может потянуть мое аппаратное обеспечение? : (SIP прокси, распределение нагрузки). : Asterisk и подключения SIP через NAT. поддержка билинга. - конфигурация Asterisk с использованием базы данных Конфигурация Asterisk, используя файлы шаблонов. Asterisk password files: Где Вы можете найти описание пользователей и их пароли в конфигурационных файлах Asterisk? : раздел, созданный чтобы помочь Вам найти нужную функцию АТС в Asterisk. Asterisk QoS: как в Asterisk поддерживается QoS.
Asterisk rollout tips: Помощь в переходе от испытаний к практическому использованию. Asterisk security: Безопасность Вашей АТС. : Мониторинг сервера и периодическая проверка его работоспособности. Asterisk High Availability Solutions: Программные и аппаратные решения для увеличения надежности работы сервера. Asterisk Bootable CDROM: Загрузка и запуск сервера Asterisk с CDROM. Asterisk OS Platforms: На каких операционных системах может работать Asterisk .

Ссылки

Конфигурация
: Полный список! : Описание файлов конфигурации Asterisk. : Переменные, используемые при конфигурировании и в плане набора. : Встроенная база данных, используемая в плане набора. - конфигурация Asterisk с использованием базы данных. Конфигурация Asterisk, используя файлы шаблонов. : Мощный интерфейс создания программных скриптов. : Asterisk Extension Language (Язык Расширений Астериска) : Asterisk Extension Language (Язык Расширений Астериска) версия 2 - конфигурация Asterisk для поддержки DUNDi и соединений по SIP - настройка Asterisk для работы с устройствами Ranch Networks по протоколу MIDCOM

Как настроить подключение сервера Asterisk с другими VOIP провайдерами. Asterisk Configuration Examples: Полные примеры конфигурации Asterisk от различных пользователей. Asterisk Data Configuration: Zaptel and Asterisk data and hybrid configuration Замечания по конфигурации сервера Asterisk для работы с некоторыми специфичными телефонами. Asterisk Slimming: How can we slim-up about so many modules Asterisk tips and tricks: Множество примеров решения различных задач с использованием файлов конфигурации.

Управление: Поддерживаемые кодеки. Asterisk libpri: Open Source библиотека . Asterisk Paging and Intercom. : Стандартные звуковые файлы и их назначение. Asterisk multi-language: Замечания по многоязычной конфигурации сервера Asterisk. Asterisk vertical service activation codes: *XX коды, используемые в Zap каналах.
Asterisk debugging: Как получить отладочную информацию в Asterisk. Asterisk PSTN interface debugging: Проблемы с эхом, уровнем сигнала, и т.д.

Внедрение Asterisk - современное решение для создания IP телефонии на предприятии. Что значит IP телефония и почему современные предприятия не могут обойтись без нее?

IP телефония - это вид коммуникации, осуществляемой через всемирную сеть Интернет. Все вместе представляет систему программных и аппаратных средств, поддерживающих протокол IP. Говоря более простым языком, этот вид связи обеспечивает передачу данных (звук, изображение) по Интернету. Услуги IP-телефонии позволяют объединить в единую сеть все каналы посредством общей АТС, получать объективную оценку аналитики, маршрутизацию звонков. Связь через сеть лимитируется поставщиком услуг и стоит в разы дешевле.

В чем еще преимущество связи? Безопасность! Протоколы защищены, разговор по защищенной IP-линии невозможно прослушать.

Что значит Asterisk

Asterisk - готовая система для организации IP телефонии, которая полностью обеспечивает функции привычной АТС:

  • Прием входящих звонков.
  • Распределение вызовов по внутренним номерам.
  • Автоответчик и IVR меню.
  • Прием факсов.
  • Запись, прослушивание звонков.
  • Создание конференций и другое.

АТС Asterisk обладает расширенными возможностями, рассчитана на большее количество абонентов и проще в обслуживании.

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

Почему Asterisk так популярен

Существуют и другие компании, занимающиеся решениями IP телефонии. Но Asterisk вышел на рынок связи с принципиально новым решением - исходный код, разработанный компанией Digium, был открыт. А это означает бесплатное пользование программным продуктом.

Марк Спенсер, разработчик кода, предложил пользователям систем Линукс, FreeBSD, OpenBSD и другим пользоваться продуктом свободно. Сеть Интернет столь велика, что каждому найдется место, и когда появляется бесплатная возможность - предпочтение отдается ему.

Чтобы запустить работу IP-телефонии, достаточно обладать только программой. Это комплекс, в который входит соответствующий программный продукт, а специальное дополнительное оборудование не нужно. Установка занимает время и требует работу специалиста.

Внедрение Asterisk на предприятии

Внедрение Asterisk - состоит из нескольких этапов:

  1. Формируются технические требования к телефонии
  2. Подбирается мощность и конфигурация сервера, на котором будут установлены база данных и серверная часть программного обеспечения. Расчет идет из предполагаемой нагрузки. Настройка и конфигурирование сервера проводится специалистами компании.
  3. Приобретение внешних телефонных линий (SIP номеров).
  4. Настройка системы:
  • Внутренние номера.
  • Для связи с мобильными операторами устанавливается и настраивается шлюз GSM/VoIP. Это оборудование и программное обеспечение для состыковки IP-телефонии с мобильной и стационарной связью
  • Специалист настраивает запись звонков. Функция необходима для ведения записи всех переговоров с возможностью их воспроизведения. Для этого создается хранилище на сервере, где будет храниться база аудио-записей.
  • Настройка сценариев «Нет на месте», «Все операторы заняты», «Не рабочее время». Определяется индивидуально по заказу клиента
  • Настройка функций, определяемых программой и осуществляющих работу виртуальной АТС - конференции, вызов из скайпа, очередность, прослушивание звонков, принятие и отправка факсов, настройка «черного списка» и многое другое.

Провести такой объем работ могут только квалифицированные специалисты. Наша компания обеспечивает и предлагает полный сервис - установку и конфигурирование систем Asterisk на предприятиях заказчика - на выгодных условиях, с гарантией сервиса.

Зачем это нужно

Давайте рассмотрим вариант небольшого предприятия, принимающего в день определенное количество звонков, в том числе и международных. Очевидно, что если существуют входящие, то появляется необходимость и в исходящих. Рабочий день компании состоит из переговоров: работает техподдержка удаленного доступа, консультации, решение других рабочих вопросов. При обыкновенных решениях связи, затраты на коммуникацию составляют львиную долю бюджета. Имея такой ресурс, как IP-телефония и виртуальная АТС в разовые траты входит:

  • Покупка оборудования - сервер, маршрутизатор, шлюзы GSM/VoIP, телефонные аппараты для IP-связи.
  • Оплата разового конфигурирования и настройки специалистами компании-поставщика.

Как показывает опыт, первоначальные затраты полностью окупаются во время эксплуатации. Заказчик получает безопасную связь, которая не прослушивается и соединяет абонентов по всему миру. Руководитель, находясь за границей, не потратится на роуминг, но будет в курсе всех событий - с помощью своего мобильного телефона он может связаться с сотрудниками предприятия, где установлен Asterisk, и быть в курсе всех событий.

Каждое решение, предлагаемое нашей компанией, индивидуально. Наш специалист подберет оборудование, согласно задачам организации. Не придется платить лишнее и переплачивать за ненужные услуги. Каждый этап настройки обговаривается с заказчиком и находится оптимальное решение.

Сроки и выполнение зависят от конфигурации серверов и сложности настроек. Результат работы - полноценная и многофункциональная связь со всеми отделениями, клиентами и сотрудниками. Новый уровень связи выводит бизнес на высокий уровень отношений внутри коллектива и с клиентами.

Виды работ по настройке телефонии производимые нашими специалистами

  • Установка и настройка сервера, Установка серверного ПО для управления IP телефонией.
  • Настройка внутреннего номера
  • Настройка записи звонков
  • Регистрация SIP линии
  • Настройка GSM шлюза
  • Настройка VoIP шлюза
  • Настройка IVR меню
  • Сценарий «Нет на месте»
  • Сценарий «Все операторы заняты»
  • Сценарий «Не рабочее время»
  • Очередь звонков
  • Настройка конференции
  • Звонки на SKYPE
  • Парковка звонка
  • Прослушивание разговоров
  • Вторжение в разговор
  • Голосовая почта с отправкой на почту
  • Удалённый доступ с обратным вызовом callback
  • Отправка факса
  • Чёрный список

Термины IP телефонии

VOIP Шлюз - Оборудование, предназначенное для перевода аналогового телефонного сигнала в цифровой сигнал. (VoIP)
GSM Шлюз - Оборудование предназначенное для подключения SIM карт мобильных операторов к аналоговой линни.
GSM-VoIP шлюз - Оборудование предназначенное для подключения SIM карт мобильных операторов к IP линии.
IP линия - Это линия между сервером и клиентом, по которой сигнал передается по протоколу SIP.
Внутренний номер - Внутренний номер сотрудника на который он будет принимать звонки

На просторах Интернет можно найти много инструкций по . И они помогают настраивать и управлять АТС в большинстве случаев. Но гораздо больше возможностей дает настройка «чистого» Asterisk.

В статье мы сделаем базовую настройку Asterisk через конфигурационные файлы. Предполагается, что у нас уже установлена и первоначально настроена ОС, скачены и установлены модули dahdi, libpri, iax2, необходимые голосовые файлы и кодеки и проинсталлирован Asterisk.

Если вы еще не ничего не установили, то посмотрите в нашей статье

А еще вам понадобится для трассировки и отладки SIP-сообщений. Погнали?

Теория

Итак, приступаем к внедрению Asterisk . Структура используемых Астериском директорий следующая:

  • /usr/lib64/asterisk/modules – тут находятся загружаемые модули;
  • /var/log/asterisk – тут находятся лог-файлы, в том числе и лог звонков (если не настроено другое);
  • /var/spool/asterisk – тут находятся подпапки, в которых находятся бэкапы, записи разговоров, голосовая почта, факсы и так далее;
  • /var/lib/asterisk – тут находятся подпапки, в которых находятся звуковые файлы для музыки на удержании, звуковые файлы для выбранных языков (например для проигрывания голосовых сообщений в IVR), записанные голосовые сообщения для приветствия и так далее.

Конфигурационные файлы находятся в папке /etc/asterisk. Для работы каждого модуля Asterisk необходим конфигурационный файл. Эти файлы (с расширением.conf), содержат определения каналов, описывают различные внутренние сервисы, определяют местоположения других модулей, устанавливают связь с диалпланом. Необязательно настраивать все файлы. Требуют настройки только те, которые необходимы для вашей конфигурации.

Основные конфигурационные файлы:

  • asterisk.conf – определяет глобальные параметры, директории и опции для запуска Asterisk;
  • cdr.conf – определяет настройки для записи параметров вызовов в файл или базу данных;
  • sip.conf – определяет настройки для использования SIP-протокола (как общие, так и параметры для регистрации провайдеров, внутренних пользователей и так далее);
  • rtp.conf – определяет порты для голоса (RTP);
  • iax.conf – определяет настройки для использования IAX-протокола (как общие, так и параметры для регистрации провайдеров, внутренних пользователей и так далее);
  • extensions.conf – основной файл, в котором описывается весь диалплан, то есть правила обработки всех вызовов;
  • features.conf – описывает дополнительные функции (переадресации, парковка вызова, включение записи по запросу и так далее);
  • logger.conf – определяет тип и детальность сообщений, записываемых в файлы журналов;
  • modules.conf – определяет какие модули будут или наоборот не будут загружаться при запуске Asterisk;
  • musiconhold.conf – используется для конфигурации разных классов музыки, используемых в приложениях музыки во время ожидания, и их местоположений;

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

Скачать архив

Сразу после установки asterisk, если не была выбрана установка базовой конфигурации, в ней нет ни одного файла.

Для подключения к asterisk в режиме командной строки необходимо ввести

Asterisk –rvvvvv

  • r – подключение к уже запущенному процессу;
  • vvvvv – уровень логирования, то есть вывода информации (от слова verbose - v). Чем больше v выставляем, тем более детальная информация будет выдаваться в командную строку;

Создаем и редактируем необходимые файлы

Начнем с файла asterisk.conf :


  • (!) – указываем расположение необходимых директорий. Знаком (!) указывается признак шаблона. В шаблоне указываются общие настройки, на которые можно ссылаться дальше.
  • – указываем необходимые опции, одна из необходимых maxcalls указывает на количество одновременных вызовов, разрешенных на Asterisk;
    • transmit_silence_during_record = yes - передавать тишину SLINEAR во время записи канала;
    • languageprefix = yes | no - Должен ли код языка быть последним или первым компонентом имени звукового файла? Если выключен, поиск звуковых файлов ведется в формате // Если включен, поиск ведется в формате //;
    • execincludes = yes | no - Разрешить записи #exec в конфигурационных файлах;
    • hideconnect = yes | no - Показывать сообщение о подключении удаленных консолей;
    • dontwarn = yes | no - Отключить предупреждения (warning messages);
    • debug = no - Отладка: No или значение (1-4);
    • maxcalls = 10 - Максимальное число одновременных вызовов;

Приступаем к файлу cdr.conf . Комментарии к опциям в конфиге:

Enable=yes ; включаем саму возможность логирования звонков unanswered=no ; неотвеченные звонки не логируем safeshutdown=yes ; при выключении сервера будем ждать, пока не допишутся ВСЕ логи usegmtime=yes ;лог date/time в формате GMT. По умолчанию NO loguniqueid=yes loguserfield=yes

Закончили. Теперь файл features.conf :

; тут описываем используемые функции и их параметры blindxfer => ## ; безусловный перевод atxfer => *2 ; условный перевод automon => *1 disconnect => ** parkext => 700 ; парковка parkpos => 710-780 ; диапазон портов для парковки context => parkedcalls ; контекст для обработки запаркованных звонков parkingtime => 180 ; время парковки comebacktoorigin => no ; возвращать звонок на инициатора, когда закончилось время парковки вызова parkedplay => both ; кому играть courtesytone когда вызов снимается с парковки. Опции: callee, caller, both или no(по умолчанию) parkedcalltransfers => caller ; Кто может сделать трансфер припаркованного вызова с помощью DTMF. Опции: callee, caller, both или no(по умолчанию) parkedcallrepark => caller ; Кто может перепарковать, припаркованный вызов с помощью DTMF. Опции: callee, caller, both или no(по умолчанию) parkedcallhangup => no ; Кто может закончить, припаркованный вызов с помощью DTMF Опции: callee, caller, both или no(по умолчанию) parkedcallrecording => no ; Кто может инициировать запись, с помощью DTMF. Опции: callee, caller, both или no(по умолчанию).. parkedmusicclass => default ; Класс музыки ожидания для припаркованного, adsipark => no ; Передавать или нет ADSI инфо о припаркованном вызове тому кто припарковал findslot => first pickupexten => *8 ; перехват звонка ; тут описываем используемые приложения sendsms => *99,peer/both,Macro,sendsms pitch => *00,self/both,Macro,pitch

Теперь конфигурируем RTP в файле rtp.conf

Rtpstart=36600 rtpend=39999

Музыка на ожидании в здании. Открываем файл musiconhold.conf

Mode=files directory=/var/lib/asterisk/moh/

Следом открываем файл logger.conf :

Console => notice,warning,error,dtmf,verbose(5) ; уровень детализации сообщений, выводимых в консоль full => debug,notice,warning,error,verbose(9),dtmf,fax,security ; уровень детализации сообщений, выводимых в лог-файл

И напоследок - файл modules.conf . Есть 2 варианта: либо читаем все модули и указываем те, которые не надо читать:

Autoload=yes noload => codec_g723-ast110-gcc4-glibc-x86_64-core2-sse4.so

Либо указываем конкретные модули, которые необходимо прочитать и запрещаем чтение всех. В этом случае для удобства лучше поделить модули на секции. Ниже приведена часть такого варианта:

Autoload = no ; Applications load = app_bridgewait.so load = app_dial.so load = app_playback.so ; Bridging load = bridge_builtin_features.so load = bridge_builtin_interval_features.so load = bridge_holding.so ; Call Detail Records load = cdr_custom.so ; Channel Drivers load = chan_bridge_media.so load = chan_sip.so ; Codecs load = codec_gsm.so load = codec_ulaw.so load = codec_alaw.so load = codec_g722.so ; Formats load = format_gsm.so load = format_pcm.so load = format_wav_gsm.so load = format_wav.so ; Functions load = func_callerid.so load = func_cdr.so load = func_pjsip_endpoint.so ; Core/PBX load = pbx_config.so ; Resources load = res_musiconhold.so load = res_pjproject.so load = res_pjsip_acl.so

В данной статье мы используем первый вариант. На этом с настройкой основных файлов закончим. В дальнейшем по мере необходимости в них можно вносить изменения. Все последующие настройки мы будем вносить в файлы sip.conf и extensions.conf . Погнали к созданию и регистрации внутренних абонентов.

Создание и регистрация внутренних абонентов

В sip.conf указываем сначала общие параметры SIP для Asterisk:

Bindaddr=0.0.0.0 ; указываем IP-адрес и порт, на котором будет приниматься bindport=5060 ; SIP-трафик language=ru ; используемый язык для голосовых сообщений alwaysauthreject=yes allowguest=no ; запрещаем принимать «гостевые» звонки, то есть вызовы от незарегистрированных пользователей

Так же в этой секции можно указать поддерживается ли видео, время регистрации, перечислить локальные сети, указываем внешний IP-адрес в случае использования NAT и так далее.

В случае, когда у нас есть разные группы абонентов (например, есть несколько отделов, подразделений либо другие какие-то признаки группировки абонентов или абонентов большое количество), рекомендуется использовать шаблоны, в которые можно выносить обобщенные настройки.

Имя шаблона берется в скобки и следом указывается (!) . В шаблоне можно указать контекст для этих абонентов, используемые кодеки, разрешенные/запрещенные сети для регистрации этих абонентов, использование NAT и так далее. Пример шаблона приведен ниже:

(!) type=friend deny=0.0.0.0/0.0.0.0 permit=192.168.10.0/255.255.255.0 host=dynamic context=from-internal nat=no qualify=yes directmedia=no disallow=all allow=alaw allow=ulaw dtmfmode=info

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

[НОМЕР](ШАБЛОН) callerid=ИМЯ secret=ПАРОЛЬ callgroup=5 ; номер группы вызова pickupgroup=1,2,3,4,5 ; номера групп перехвата вызовов

Пример настройки:



В результате, по команде sip show peers мы видим зарегистрированных пользователей

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

Диалплан состоит из следующих основных элементов:

  • контексты ;
  • добавочные номера ;
  • приоритеты ;
  • приложения ;

Контекст – часть (раздел) диалплана, описывающая алгоритм обработки вызова и изолированная от остального диалплана. Содержит дополнительные номера (extension). Дополнительные номера, определенные в одном контексте, полностью изолированы от добавочных номеров в другом контексте, если это не разрешено специально. Так же с помощью контекстов можно ограничивать доступ к различным функциям (например к междугородним или международным звонкам). Имя контекста заключается в квадратные скобки . Рекомендуется создавать разные контексты для внутренних абонентов и для транков.

В начале диалплана находятся два специальных контекста, и

  • – содержит список общих настроек диалплана;
  • – содержит глобальные переменные;

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

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

Добавочные номера – это широкое понятие, которое определяет уникальные последовательности шагов (каждый шаг включает приложение), которые Asterisk будет применять к вызову по этой линии. В каждом контексте может быть задано столько добавочных номеров, сколько требуется. При вызове конкретного добавочного номера (входящим или внутренним звонком) Asterisk будет выполнять шаги, определенные для этого добавочного номера. Поэтому именно добавочные номера определяют, что происходит со звонками при их обработке соответственно диалплану.

Полный добавочный номер состоит из трех компонентов:

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

Эти три компонента разделяются запятыми:

Exten => имя,приоритет,приложение()

Есть ещё зарезервированные добавочные номера:

  • s - когда в контекст поступают вызовы, для которых не указан конкретный добавочный номер, они передаются на добавочный номер s. (s - сокращение от start (начало), поскольку именно здесь начнется обработка вызова, если не передана информация о добавочном номере.;
  • i - когда абонент нажимает не ту кнопку (не существующий добавочный номер), вызов направляется на добавочный номер i;
  • t - если абонент слишком долго не нажимает кнопку после запуска приложения WaitExten(), вызовы направляются на добавочный номер t (время ожидания по умолчанию - 10 с);
  • h - экстеншен обрабатываемый при завершении вызова. После того как медиаканал закрылся;

Иногда можно встретить использование same вместо exten . Это применяют в основном с автоматическим выставлением приоритета, то есть same => n и означает «тоже самое, продолжение предыдущего»

Приоритеты – последовательность выполнения приложений. Каждый приоритет пронумерован последовательно, начиная с 1, и выполняет одно определенное приложение. В Asterisk есть еще приоритет n , что означает «следующий». Каждый раз, когда Asterisk встречает приоритет n, она берет номер предыдущего приоритета и добавляет 1. Это упрощает внесение изменений в диалплан, поскольку теперь не надо изменять номера всех шагов.

Приложения – выполняет определенное действие в конкретном дополнительном номере (например воспроизведение звука, прием тонального ввода, вызов канала, разрыв соединения и так далее).

Для выполнения некоторых приложений, таких как Answer() и Hangup(), не требуется никаких дополнительных инструкций. Некоторым приложениям необходима дополнительная информация. Эти данные, называемые аргументами, могут передаваться в приложения, чтобы оказывать влияние на то, как они выполняют свои действия. Чтобы передать аргументы в приложение их указывают через запятую в круглых скобках, следующих за именем приложения.

Для внесения комментариев в файл extensions.conf используют ; - вы уже могли об этом догадаться, судя по нашим комментариям прямо в конфигах:)

Таким образом можно как делать пометки для себя, так и делать невыполнимыми строки конфигурации (например, во время отладки)

Теперь давайте вернемся к нашим созданным абонентам. Создадим контекст, который указан у абонентов (context=from-internal )

В нем мы прописали что при наборе номера (ИМЯ), с приоритетом 1 выполнить приложение Dial c параметрами ПРОТОКОЛ/НОМЕР. Когда номеров немного, то можно конечно и так описывать. Но более правильно и красиво сделать тоже самое, но с использованием «маски»:

То есть при наборе любого номера из диапазона 10хх (шаблон показан нижним подчеркиванием) выполнить вызов с приоритетом 1 через приложение Dial с параметрами ПРОТОКОЛ/НАБРАННЫЙ_НОМЕР, время вызова 60 секунд и можно использовать перевод звонка (transfer).

Шаблон номера - это уникальный набор цифр, который определяет использование этого номера. Если набранный номер соответствует этому шаблону, то последующие номера не рассматриваются. Формат заполнения шаблона:

  • X - совпадение любой цифры от 0 - 9;
  • Z - любая цифра от 1 до 9;
  • N - совпадение любой цифры от 2 - 9;
  • - соответствует любым цифрам или буквам и скобках (в этом примере,1,2,3,7,8,9);

Перечитываем диалплан в консоли Asterisk командой dialplan reload и видим выполнение вызова.


Таким образом мы можем придумать и реализовать практически любой диалплан. Например для запрета вызовов на международную связь достаточно прописать 3 строчки:

То есть при наборе 810 будет проиграно сообщение destination-closed (если оно было загружено в Asterisk) и будет отправлен сигнал отбоя.

Создание и регистрация транков

Ну, начнем с того, что IP-транки, используемые в Asterisk, бывают 2-х видов – SIP и IAX.

SIP-транки в основном используются для подключения провайдеров, а IAX-транки для подключения других Asterisk. Транки могут быть с регистрацией (то есть когда провайдер выдает логин, пароль и адрес или домен для регистрации у него) и без регистрации (то есть когда подключение идет по IP-адресу без логина и пароля). В случае с регистрацией в файле sip.conf необходимо сразу после секции указать строку регистрации в формате:

Register => ЛОГИН:ПАРОЛЬ@SIP-ПРОВАЙДЕР/НОМЕР

  • SIP-ПРОВАЙДЕР - указывается или IP-адрес провайдера или его домен;
  • ЛОГИН:ПАРОЛЬ - выдаются провайдером для подключения;
  • НОМЕР - указывается городской номер, выданный провайдером для совершения звонков;

Рассмотрим создание SIP-транка с регистрацией. Опять же если у нас несколько (до 3-5) таких транков, то можно их описать каждый отдельно. А если из больше или в дальнейшем планируется увеличить их количество, то можно использовать шаблон для подключения к оператору.

(!) ; имя шаблона type=peer ; тип подключения context=from-trunk ; используемый контекст для обработки вызовов disallow=all ; выключаем все кодеки allow=alaw ; указываем используемые кодеки allow=ulaw insecure=invite,port ; не запрашивать авторизацию на входящие звонки qualify=yes ; проверка доступности directmedia=no ; запрещаем установление прямых соединений для передач голоса dtmfmode=rfc2833 ; указываем используемый тип DTMF дальше достаточно описать конкретные настройки для конкретного оператора и указать какой шаблон использовать [ОПЕРАТОР-1](voip-provider) defaultuser=ЛОГИН-1 fromuser=ЛОГИН-1 secret=ПАРОЛЬ-1 host=ДОМЕН1- ИЛИ IP-АДРЕС ДЛЯ ПОДКЛЮЧЕНИЯ fromdomain= ДОМЕН-1 ИЛИ IP-АДРЕС ДЛЯ ПОДКЛЮЧЕНИЯ [ОПЕРАТОР-2](voip-provider) defaultuser=ЛОГИН-2 fromuser=ЛОГИН-2 secret=ПАРОЛЬ-2 host=ДОМЕН-2 ИЛИ IP-АДРЕС ДЛЯ ПОДКЛЮЧЕНИЯ fromdomain= ДОМЕН ИЛИ IP-АДРЕС ДЛЯ ПОДКЛЮЧЕНИЯ

Register => ЛОГИН-1:ПАРОЛЬ[email protected]ДОМЕН-1/НОМЕР-1 register => ЛОГИН-2:ПАРОЛЬ[email protected]ДОМЕН-2/НОМЕР-2

Перечитываем файл sip.conf и проверяем регистрации:

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

(voip-provider) type=friend ; для транка без регистрации указываем friend (то есть мы доверяем этому подключению) port=5060 ; указываем порт для подключения insecure=port,invite host=IP-АДРЕС_ПРОВАЙДЕРА context=from-trunk-sip-AST10SIP ; если обработки вызовов через этот транк используется другой контекст, то указываем его тут.

Перечитываем файл sip.conf и проверяем регистрации:

Теперь рассмотрим создание IAX-транка. Для настройки IAX-транков используется файл iax.conf , который содержит всю информацию, необходимую Asterisk для создания и управления каналами, работающими по протоколу IAX. Структура его примерно такая же, как и у sip.conf :

; указываем глобальные параметры для протокола IAX bindaddr=0.0.0.0 bindport=4569 ; по-умолчанию IAX-протокол использует порт 4569 можно оставить его, а можно и переопределить language=ru ; указываем строки для регистрации транков register => msk-spb:[email protected] username = msk-spb ; логин для регистрации на удаленной стороне type = friend trunk = yes secret = SuperPASS ; пароль для регистрации qualify = yes host = 10.10.10.10 ; IP-адрес удаленной стороны disallow= all context = from-iax ; контекст для обработки вызовов, поступающих через этот транк allow = alaw allow = ulaw

Сохраняем файл iax.conf , перечитываем и проверяем регистрацию командой iax2 show peers :

Если есть абоненты, работающие по протоколу IAX, то их регистрацию описываем тоже в этом же файле аналогично SIP-регистрации.

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

Exten => 500,1,Playback(it-otdel) ; проигрывается сообщение it-otdel exten => 500,1,Dial(SIP/1001,5),Tt ; 5 секунд вызов идет на номер 1001 exten => 500,n,Dial(SIP/1002&SIP/1003) ; потом вызов идет одновременно на 1002 и 1003

Можем настраивать различные функции, запускать различные команды (в том числе и для выполнения через ОС), настраивать запись и прослушивание разговоров и так далее:

; ответить, подождать 2 секунды и положить трубку exten => 060,1,Answer() same => n,Wait(2) same => n,Hangup() ; ответить, проиграть сообщение hello-world и положить трубку exten => 061,1,Answer() same => n,Playback(hello-world) same => n,Hangup() ; записать сообщение в файл somefile.gsm и потом его проиграть exten => 067,1,Record(/tmp/somefile.gsm,3,30) same => n,Playback(/tmp/somefile)

Для совершения звонков через созданные и зарегистрированные транки SIP и IAX: Допустим через транк IAX у нас подключен другой Asterisk с внутренней нумерацией, начинающейся с 1, 2, 3. И для вызова этих абонентов мы будем использовать префикс (код выхода на маршрут) 2. Тогда строки настройки будут следующие:

Exten => _2.,1,Dial(IAX2/msk-spb/${EXTEN:1},30,r) exten => _2.,2,Hangup()

То есть при наборе, начинающемся с 21-23, будет осуществлен вызов через транк msk-spb по протоколу IAX набранного номера, предварительно «отрезав» 1 (первую) набранную цифру. Если в течение 30 секунд не будет получен ответ, то вызов будет прекращен.

Для выхода в город мы используем транк с оператором-1 и префикс выхода будем использовать 9

Exten => _9849XXXXXXX,1,Dial(SIP/ОПЕРАТОР-1/${EXTEN:1}) ;то есть при наборе, начинающемся с 9, будет осуществлен вызов через транк ОПЕРАТОР-1 по протоколу SIP набранного номера, предварительно «отрезав» 1 (первую) набранную цифру

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

Теперь перейдем к транкам и входящим звонкам. Соответственно для того, чтобы принимать входящие вызовы, необходимо прописать маршрутизацию уже в контексте транка (context=from-trunk или context = from-iax )

Для возможности через транк осуществлять вызов нашего внутреннего абонента (например через транк со встречной АТС) необходимо в контекст транка вставить exten => _10XX,1,Dial(SIP/${EXTEN},60,tTm)

Давайте рассмотрим реализацию обработки входящего вызова от оператора (вызов на городской номер) через создание меню IVR и реализуем ещё определение рабочего и нерабочего времени. Схема обработки входящего вызова следующая:

Рабочее время у нас определено с 9:00 до 19:00 и с понедельника по пятницу. При поступлении звонка в нерабочее время после сообщения с приветствием (01-hello) проигрывается сообщение с указанием рабочего времени (07-working-hours). При поступлении звонка в рабочее время (проверка осуществляется в строке GoToIfTime(09:00-19:00,mon-fri)) после приветствия осуществляется переход в другой контекст ( ), где предлагается выбрать необходимый пункт меню (0 – вызов секретаря, 1 – вызов на группу тех. поддержки, 2 – переход в другое меню выбора (GoTo(ivr-2,s,1)), в котором по такому же принципу осуществляется выбор. В каждом меню реализован донабор внутренних номеров (exten => _1xхx,1,NoOp), обработка неправильного набора номера (exten => i,1,NoOp), обработка в случае, что если ничего не выбрали (exten => t,1,NoOp), вызов переводится на секретаря.

Естественно необходимо загрузить все используемые голосовые файлы в /var/lib/asterisk/sound/ru в случае использования русского языка. Тут давайте немного по-подробнее.

Как мы уже указывали выше в системе мы определили какой основной язык у нас будет использоваться для голосовых файлов (в файле sip.conf параметр language = ru ). Это значит, что Asterisk будет искать имена файлов, которые мы указываем, например, в меню ivr в папке /var/lib/asterisk/sound/ru (смотрим обозначения директорий при запуске asterisk в начале статьи). Если бы мы использовали в качестве основного языка английский, то папка была бы /var/lib/asterisk/sound/en . В каждой из этих папок находятся голосовые файлы выбранных языков и в выбранных форматах, указанных при компилировании asterisk. Если мы хотим записать свои сообщения (персональные приветствия, необходимые объявления, произносимые в создаваемых меню ivr и так далее), нам необходимо положить эти файлы в папку с соответствующим языком. Сами файлы при этом можно записать любой звукозаписывающей программой (хоть программой Звукозапись , входящей в стандартный дистрибутив любой версии Windows) и сохранить в формате wav (несжатый голос, 8кГц, 16 Бит, Моно)

Тут главное не перепутать имена файлов, находящихся в папке с голосовыми сообщениями, с именами, указанными в ivr меню. при этом в ivr меню имена указываются без расширения. Сам листинг приведен ниже.

Exten => _X.,1,NoOp(Проверка времени: Если попали в диапазон - переходим в контекст working-time, если нет - продолжаем выполнение) same => n,Answer() same => n,Playback(01-hello) same => n,GoToIfTime(09:00-19:00,mon-fri,*,*?working-time,s,1) same => n,Playback(07-working-hours) same => n,Hangup() exten => s,1,Answer() same => n,Background(01-ivr1) same => n,StartMusicOnHold() same => n,WaitExten(5) ; exten => 0,1,NoOp(Если нажали "0" - звоним секретарю) same => n,Playbacr(ostavaites-na-linii) same => n,Dial(SIP/1005,30,mtT) same => n,Hangup() ; exten => 1,1,NoOp(Если нажали "1" - звоним на группу вызова: 1001+1002) same => n,Playback(it-otdel) same => n,Dial(SIP/1001&SIP/1002,30,mtT) same => n,Hangup() ; exten => 2,1,NoOp(Если нажали "2" - перенаправляем на ivr-2) same => n,GoTo(ivr-2,s,1) ; exten => _1xхx,1,NoOp(Прямой набор внутренних номеров) same => n,Playback(ostavaites-na-linii) same => n,Dial(SIP/${EXTEN}15,mtT) same => n,Hangup() ; exten => i,1,NoOp(Обработка ошибочного набора:i=illegal) same => n,Playback(oshibka) same => n,Dial(SIP/1005,30,r) ; exten => t,1,NoOp(В случае, если не дождались нажатия) same => n,Playback(ostavaites-na-linii) same => n,Dial(SIP/1005,30,m) ; exten => s,1,Background(02-ivr2) same => n,StartMusicOnHold() same => n,WaitExten(5) ; exten => 1,1,NoOp(Если нажали "1" - звоним на 1001) same => n,Dial(SIP/1001,30,mtT) same => n,Hangup() ; exten => 2,1,NoOp(Если нажали "2" - звоним на 1002) same => n,Dial(SIP/1002,30,mtT) same => n,Hangup() ; exten => _1xхx,1,NoOp(Прямой набор внутренних номеров) same => n,Dial(SIP/${EXTEN}15,mtT) same => n,Hangup() ; exten => i,1,NoOp(Обработка ошибочного набора:i=illegal) same => n,Playback(oshibka) same => n,Dial(SIP/1005,30,r) ;

После сохранения файла extensions.conf перечитываем диалплан в консоли (dialplan reload) и проверяем. На этом закончим с примерами.

Конфигурируя Asterisk через конфигурационные файлы, мы получаем возможность реализовать практически любую логику работы, проводить интеграции со сторонними сервисами, запускать и выполнять скрипты на уровне ОС и так далее.

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

Лучшие статьи по теме