Меню

Астериск телефония установка и настройка

Asterisk АТС, инструкция по настройке

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

Для примера настройки Asterisk возьмем офис с такими характеристиками:

Не советуем устанавливать Asterisk из репозитория, так как при данной установке может установиться не та версия asterisk и необходимых к ней зависимостей. В данном случае используем установку Asterisk из исходников.

В разных операционных системах (Cent Os, Ubunty и др.) отличаются команды и необходимые зависимости.

Установка Asterisk из исходников

Вначале нужно установить дополнительные пакеты, которые необходимы для установки и работы Asterisk. Без части из этих пакетов Asterisk вообще откажется устанавливаться (к примеру, если отсутствует gcc). Без некоторых пакетов Asterisk установится и даже будет работать, однако часть функционала будет недоступна. Например, пакет bison необходим для обработки выражений в файле extensions.conf. Еще пример: libnewt необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которое является отдельной программой. В нашем приводиться пример установки Asterisk 13 в системе Cent OS 6.9:

Для 12-13 версии Asterisk требуется установка пакетов uuid и janson. Для установки библиотеки uuid в RHEL / Centos выполните команду:

. Для установки библиотеки jansson в RHEL / Centos выполните команду:

После обновляем систему до последней версии командой yum update –y и перегружаем ее: reboot

Чтобы получить эффективное и рабочее решение, рекомендуем: выполняйте установку и настройку Asterisk в чистом виде, без дополнительных плат расширения и модемов. Так вы получите программную АТС, которую можно легко переносить с одного сервера на другой. Для этого необходимо установить Asterisk с нуля, инсталлировать pjproject с jansson, обновить систему и отключить SELinux.

Для начала отключим Selinux. Для этого заходим /etc/selinux/config и ставим: SELINUX=DISABLED.

Также выключаем FireWall (iptables):

Скачайте и инсталлируйте pjproject:

git clone git://github.com/asterisk/pjproject pjproject

./configure –libdir=/usr/lib64 –prefix=/usr –enable-shared –disable-sound –disable-resample

Источник

Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04

Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недорогой способ это сделать — развернуть бесплатный сервер VoIP с открытым исходным кодом Asterisk на виртуальной машине. В статье для примера мы использовали Ubuntu 20.04, но этот рецепт подойдет и для других версий популярного дистрибутива — 18.04 и 18.10, а также (в теории, мы не проверяли) для актуальных версий Debian.

Asterisk + Ubuntu + VDS = IP-PBX

Существуют и другие серверы VoIP, при этом некоторые коммерческие продукты ограниченное время можно использовать бесплатно. Считается, что они гораздо проще в настройке, но требуют для работы Windows или установки с собственного дистрибутива Linux. Это сразу отсекает большинство недорогих VDS, а собственное железо с каналом передачи данных или аренда выделенного аппаратного сервера обходятся дороже. Бесплатный Asterisk разворачивается на любой виртуальной машине, к тому же внедрить его не так сложно. Для этого не потребуется даже сборка из исходных текстов. С помощью Asterisk нетрудно наладить телефонную связь между IP-телефонами (аппаратными и программными), а если подключиться к внешнему провайдеру VoIP, то за небольшую сумму денег вы получите полноценную IP АТС (IP-PBX). Если потребность в ней исчезнет, отказаться можно в любой момент — аренда выгоднее вложений в железо и софт.

Установка Asterisk

Инсталляция сервера VoIP на Ubuntu 20.04 — самая простая часть квеста. Необходимый пакеты есть в официальном репозитории дистрибутива и добавляются в систему парой команд. В Ubuntu мы используем механизм повышения привилегий sudo, а в Debian он скорее всего не понадобится, поскольку там практикуются интерактивные сеансы с правами root:

Запуск и остановка службы Asterisk производятся через systemd, а посмотреть ее статус после инсталляции можно с помощью команды systemctl :

Если все прошло удачно, результат будет примерно таким:

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

Пока все стандартно, но самая увлекательная часть нашего приключения впереди. Сервер VoIP нужно настроить.

Настройка Asterisk

Файлы конфигурации находятся в каталоге /etc/asterisk, причем их там огромное количество.

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

Переходим к редактированию новых конфигурационных файла (самые любопытные могут изучить резервные копии дистрибутивных, там много интересного):

В файл нужно добавить минимум двух пользователей (внутренних абонентов) с номерами 1001 и 1002, а также задать для них пароли (параметр secret). На вашем сервере внутренние номера и пароли будут другими:

Читайте также:  Как сбросить все настройки на андроиде планшете

[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes

[1001]
type=friend
host=dynamic
secret=1234

[1002]
type=friend
host=dynamic
secret=5678

Аналогично делаем новый extensions.conf:

Его содержание будет следующим:

[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no

[default]
exten => 1001,1,Dial(SIP/1001,10)
exten => 1002,1,Dial(SIP/1002,10)

Меняем владельца и права доступа к файлам, поскольку там лежат, в частности, пароли пользователей нашей АТС

Теперь нам остается только перезапустить службу и проверить ее работоспособность:

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

Подключение абонентов

Чаще всего для подключения к виртуальной АТС используют программные телефоны для настольных и мобильных операционных систем. Их существует великое множество, для тестов мы взяли бесплатный Linphone для iOS и Android. При первом запуске нужно будет выбрать опцию «ИСПОЛЬЗОВАТЬ SIP ПОЛЬЗОВАТЕЛЯ», а затем указать в настройках IP нашего сервера, логин и пароль. Учетную запись сервиса Linphone создавать не надо, у нас есть собственный.

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

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

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

FreePBX 13 настройка c нуля

Что такое CEL Channel Event Logging на Asterisk?

Пошаговая настройка видео – звонков на Asterisk

Установка FusionPBX на CentOS 7

Пропущенные вызовы на Cisco 7811 в связке с Asterisk

Интеграция Asterisk и Instagram

Обновление FreePBX до 13 версии

Avaya 9621G

Еженедельный дайджест

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

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

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

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

Теория

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Resilio sync ubuntu настройка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Билайн настройки интернета на компьютере вручную

Дальше указываем строки для регистрации у данных операторов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рабочее время у нас определено с 9:00 до 19:00 и с понедельника по пятницу. При поступлении звонка в нерабочее время после сообщения с приветствием (01-hello) проигрывается сообщение с указанием рабочего времени (07-working-hours). При поступлении звонка в рабочее время (проверка осуществляется в строке GoToIfTime(09:00-19:00,mon-fri)) после приветствия осуществляется переход в другой контекст ([working-time]), где предлагается выбрать необходимый пункт меню (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 меню имена указываются без расширения. Сам листинг приведен ниже.

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

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

Источник