Asterisk настройка подключения к провайдеру

Обновлено: 07.07.2024

Подробная инструкция по настройке АТС Asterisk сервера для офиса. После настройки Вы получите базовую функциональность телефонной АТС.
1. Создадим 5 номеров к которым можно будет подключить как softphone например 3CXPhone и MicroSIP так и железный радио sip телефон например GIGASET C610A IP, телефон Cisco 7492.
2. Подключим прямой московский номер у провайдера IP телефонии Zadarma, настроим прием звонков с прямого номера на наши внутренние номера телефонов.
3. Настроим звонки с/на внутренние номера Zadarma провайдера телефонии которые не тарифицируются.
4. Настроим звонки на внешние номера через Zadarma провайдера телефонии.

Если Вам нужно потренироватся, то можно не подключать прямой номер, а обойтись внутренним провайдера, чтобы проверить текущую конфигурацию телефонии в работе. Для имитации звонка на прямой номер, подключаетесь со смартфона к задарма по одному из сипов, стандартно дается 3 sip номера на аккаунт и позвонить на внутренний sip номер подключенный на Asterisk.

Настройки SIP номера на сайте Zadarma.com

Установлен Asterisk 13 по инструкции Установка Asterisk PBX 13 в Debian и Ubuntu server либо по другой из множества инструкций по установке Asterisk на данном сайте.

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

Переходим в эту папку выполнив команду:

Создаем нужные конфигурационные файлы выполнив команды:

Создаем файл с шаблонами пользователя:

Создаем номера внутренних телефонов:

Создаем файл peers_registered.conf в котором настраиваем регистрацию sip у провайдера:

Создаем конфигурационный файл peers_trunks.conf, в котором будут настройки подключения внешнего провайдера телефонии:

Создаем файл extensions.conf в котором подключаем диалплан:

Настраиваем перевод звонков:

Так как у меня нет оборудования Dahdi, потому Asterisk ругается на ошибку:

Выполняем команду для отключения Dahdi:

Включаем verbose при входе в консоль через команду rasterisk(чтоб в консоли было видно звонки, изменять детальность можно изменяя параметр с 3 на выше ):

Если выскакивает ошибка:

Отключить поддержку ARI в файле ari.conf выполнить команду:

Перезагружаем Asterisk сервер:

Зайдя в консоль Asterisk выполнив rasterisk или asterisk -vvv выполняем команду:

Настроили номера и подключили Настройки SIP номер с Zadarma.com

В нашем случае видим статус OK и Registered

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

Для примера подключим один софтфон к 101 номеру и второй софтфон к 102 номеру, на смартфоне я подключу дополнительный sip аккаунт для проверки звонка снаружи на телефонию и с телефонии на смартфон по внутренней нумерации провайдера, также позвоним на тестовый номер дозвона провайдера и номер проверки баланса у провайдера.

Подключаем Софтфон 3CXPhone к 101 номеру который мы сделали выше, параметры:

Номер: 101
Пароль: ch72passwd
IP сервера: 10.100.10.10

Подключаем Софтфон к Asterisk телефонии - 1

Создаем новый аккаунт в 3CXPhone:

Подключаем Софтфон к Asterisk телефонии - 2

Если Вы используете не стандартный порт, например 5171, указываем IP сервера с портом: 10.100.10.10:5171

Подключаем Софтфон к Asterisk телефонии - 3

Подключаем Софтфон к Asterisk телефонии - 4

Подключаем Софтфон ]]> MikroSIP ]]> , параметры подключения:

Номер: 102
Пароль: cbTwpasswd
IP сервера: 10.100.10.10

Добавляем аккаунт при первом включении:

Подключаем Софтфон MikroSIP к Asterisk телефонии - 1.1

Если уже у вас есть аккаунт, то изменяем существующий или добавляем новый:

Подключаем Софтфон MikroSIP к Asterisk телефонии - 1

Вводим параметры подключения MikroSIP к Asterisk телефонии, если Вы используете не стандартный порт, например 5171, указываем IP сервера с портом 10.100.10.10:5171

Подключаем Софтфон MikroSIP к Asterisk телефонии - 2

Подключили софтфон MikroSIP к нашей АТС:

Подключаем Софтфон MikroSIP к Asterisk телефонии - 3

Подключили оба софтфона и провайдера к нашей телефонной АТС:

Подключили телефоны и провайдера к нашей АТС

Теперь можно сделать звонки с 101 на 102 и наоборот. Сделать звонок со смартфона с подключенным Задарма номером на внутренний сип Задарма провайдера, в моем случае это с номера 08360 на 08364 и наоборот, сделаем тестовый звонок на 4444 и для проверки баланса на 1111.

Базовая настройка Asterisk телефонии проведена, можете пользоваться.

Эта же инструкция записанная на видео, если у Вас не получается, можете посмотреть настройку Asterisk на видео:

Рейтинг статьи:

Вам понравилась статья? Хотите получать уведомления о выходе новых статей с этого сайта на свой почтовый адрес? Подписывайтесь пожалуйста. Введите свой почтовый адрес и нажмите кнопку Хочу получать статьи!

Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам. Статья входит в цикл статей по PJSIP: Установка Asterisk 16 на centos 8 TLS SRTP для драйвера PJSIP в Asterisk 15 Pjsip. Базовая настройка. Идеология настройки. Описание параметров конфигурации PJSIP в […]

Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам.

Статья входит в цикл статей по PJSIP:

Раскрывать секреты подключения транков по PJSIP будем на FreePBX Distro 15 с Asterisk 16.

Транк в Asterisk настраивается в текстовом файле /etc/asterisk/pjsip.conf , который внутри поделён на так называемые секции. В FreePBX pjsip.conf разделён на отдельные файлы по основным секциям через опцию include. Для подключения к провайдеру нужно прописать настройки в секциях transports, endpoint, aor, auth, registration, identify.

Начнём с transports

Она отвечает за то по какому протоколу будет осуществляться подключение доступные UDP, TCP, WebSockets (WS, WSS) и методы шифрования TLS/SSL.

Есть важное ограничение при создание секций транспорта:

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

При изменение настроек протоколов для их применения необходимо перезагрузить Asterisk. Можно обойтись и без перезагрузки если выставить опцию на транспорте allow_reload=yes, однако он приводит к сбросу вызова и еще ряду проблем.

Сделать это лучше через консоль :

Можно перезагрузить и через интерфейс CLI командой

freepbx*CLI> core restart now

Чтобы войти в интерфейс CLI на сервере введите

Посмотрим в CLI изменился ли транспорт для этого вводим команду

freepbx*CLI> pjsip show transports

Файл pjsip.transports.conf который был автоматически сгенерирован FreePBX, имеет теперь вот такую секцию транспорт

Транспортный протокол задан можно переходить к созданию транка. Создадим его в веб-интерфейсе FreePBX, а затем посмотрим что там произошло в файлах.

Итак в браузере открываем веб-интерфейс нашей станции.

Если вы не знаете как перейти на веб-интерфейс, то окно приветствия вам напомнит.

Консольное окно сервера с FreePBX

Консольное окно сервера с FreePBX

Начальная страница в веб-интерфейсе FreePBX

Начальная страница в веб-интерфейсе FreePBX

Подключение к оператору Zadarma

Откроется окно Add Trunk вкладка General.

  • Trunk Name – Имя транка (обычно <название оператора>_<номер транка>) может быть любым
  • Hide CallerID – спрятать CID при исходящем вызове.
  • Outbound CallerID – CallerID для исходящего вызова.
  • CID Options – определяет какие CID будут разрешены в этом транке – разрешить все, запретить иностранные и т.д.
  • Maximum Channels – максимальное количество одновременных исходящих вызовов для этого транка. Пустое значение без ограничений.
  • Asterisk Trunk Dial Options – параметры команды Dial, которые будут использоваться при вызове этого транка. Для переопределения параметров по умолчанию, установите флажок в значение «Override», а затем обратно
  • Continue if Busy – если Yes перенаправляет вызов на следующий транк даже если канал сообщает «BUSY» или «INVALID NUMBER».
  • Disable Trunk – отключает транк.
  • Monitor Trunk Failures – если установлен параметр в значение Yes, возможно указать пользовательский сценарий AGI, который будет вызываться для отчетов, журналов, электронной почты или других действий при падении транка или в случаях таких ошибок как NOANSWER, CANCEL.

Я заполнил только название транка, т.к. на этом транке Outbound CallerID будет заменен оператором на иной, а остальные опции мне не нужны.

Переходим к вкладке pjsip Settings, в ней ещё 3 подвкладки General, Advanced, Codecs. Идём по порядку General в ней указываем:

  • Username – сюда указываем тот логин что выдает оператор
  • Secret – пароль выданный оператором для этого транка
  • Authentication – тип аутентификации обычно Outbound, меняйте только если этого требует оператор. Если вы выберете «None», все вызовы с или на указанный SIP-сервер не проходят аутентификации. Установка «None» может быть небезопасной!
  • Registration – как регистрируемся на сервере оператора и нужно ли его регистрировать. Обычно операторы не отвечают на наш запрос о регистрации, так что оставляйте Send. Если только оператор не требует иного.
  • Language Code – язык для стандартных голосовых подсказок.
  • SIP Server – SIP адрес оператора, обычно выдается вместе с логином и паролем
  • SIP Server Port – SIP порт сервера
  • Context – контекст для входящего звонка
  • Transport – выбираем транспортный протокол, из тех что мы задали ранее.

Подвкладка Advanced здесь много настроек не бойтесь, нам нужны не все, а только вот такие:

  • Contact User – сюда указываем тот логин что выдает оператор
  • From Domain – имя домена, используемое в заголовке поля From в запросах к этому транку.
  • From User – всё тот же логин, что выдаёт провайдер.
  • Client URI – URI SIP-клиента, используемый при попытке исходящей регистрации. Этот параметр автоматически генерируется УАТС, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
  • Server URI – URI SIP-сервера регистрации. Этот параметр генерируется автоматически, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
  • AOR Contact – Постоянный контакт AoR для регистрации endpoint.

Support Path – Если этот параметр включен, исходящие запросы REGISTER объявят о поддержке заголовка, чтобы промежуточные прокси-сервера могли добавлять их в свои заголовки по необходимости.

Вкладка Advanced в pjsip Setting

Вкладка Advanced в pjsip Setting

В подвкладке Codecs по умолчанию стоят кодеки ulaw и alaw т.к. их поддерживают большинство (если не все) IP-телефонов и софтфонов оставим без изменения.

Жмём Submit , затем Apply Config.

freepbx*CLI> pjsip show registrations

Если вы не видите заветного Registered

Ну вот можно теперь можно посмотреть как наш транк сконфигурирован в файлах.

В этой статье я расскажу по шагам об организации IP телефонии в офисе на 15 человек с помощью Asterisk в виде сборки Askozia, неттопа Intel NUC и телефонов Linksys и Yealink, заказанных с Ebay, а также прикину примерные затраты на организацию связи со своим сервером телефонии, плюс попробую рассказать о преимуществах и недостатках этого решения.

Железо

Системные требования к железу у Asterisk минимальные. В принципе, под нашу задачу подойдет любая современная платформа. В качестве такой системы я выбрал Intel NUC DCCP847DYE с процессором Celeron и памятью 2 gb. Внутренний SSD диск не брал.

За телефонами я обратился к аукциону Ebay, используя запрос «lot linksys spa» получаем такие предложения:
Используя снайпера для ebay, мейлфорвардера и посылки с одеждой, я в общей сложности привез в офис за несколько месяцев порядка 15 телефонов Lynksys, Cisco, Yealink(Cortelco). В среднем 1 телефон обошелся в 2300 руб. Я старался брать старшие модели с двумя ethernet портами, подсветкой экрана и POE. Ну и для Sales менеджеров и специалистов техподдержки взял на том же Ebay 6 гарнитур Plantronics MX500i
Достаточно удобная штука и приемлемое для наших требований качество связи. Даже вебинары через нее проводим :)

На момент организации IP телефонии я мало чего знал про Asterisk и в Linux практически не шарил, потому выбрал готовый дистрибутив «Asterisk на флешке» — Askozia

Многоканальный номер

В качестве основного поставщика IP траффика выбрали, используемого ранее на протяжении нескольких лет, провайдера Манго Телеком.Для исходящих добавили Мультифон, Zadarma, PCTEL. У каждого из них есть свои плюсы при звонках на определенных направлениях.

Установка и настройка


Телефоны просто поставили между компьютерами и локальной сетью, гарнитуры воткнули в телефоны, хотя к ним шли USB звуковые, которые пригодились для проведения вебинаров через компьютер позже :)
Про настройку IP АТС попробую рассказать подробно, используя установку с нуля, чтобы не пропустить ничего важного. Для этого начну все с самого начала на демо системе и постепенно доведу ее настройки до состояния нашей рабочей станции.
Образ IP АТС за пару минут залил на флешку по инструкции и воткнул в Intel NUC, в биосе которого выбрал загрузку с USB. В сети есть DHCP сервер, потому Askozia сразу получила адрес, который я заменил на статический.
Собственно на этом работа в консоли завершена, и можно переходить в веб интерфейс по ip адресу отображенному в консоли.
При первом входе авторизуемся, используя учетные данные по умолчанию admin/askozia, переходим на вкладку лицензии и вбиваем полученные при покупке ключи.
У меня 2 ключа, т.к. мы используем расширенную версию Askozia с редактором маршрутов. Вводим их последовательно, сохраняя каждый ключ.В общих настройках меняем пароль, устанавливаем русский язык.

Далее в настройках подключаем внешний диск для хранения логов, голосовой почты и истории разговоров.

Диск форматируется в FAT, и его легко можно подключить к любой Windows машине, чтобы скинуть записи разговоров.

Настройка IP телефонов и SIP учеток

Далее переходим к настройке IP телефонов. В Askozia есть механизм автоматического поиска и настройки IP телефонов, есть TFTP сервер для прошивок и конфигурационных файлов. Телефоны перед автонастройкой необходимо сбросить до заводских настроек, после чего они будут доступны в интерфейсе Askozia. Можно конечно все настроить вручную, для этого придется в каждом телефоне через веб-интерфейс прописывать хост, логин и пароль.
И тоже самое на телефоне

Добавляем для каждого сотрудника учетку

Настройка провайдера
Запись разговоров
В Askozia по умолчанию есть только запись разговоров по требованию, во время звонка нажимаем *1 и запись начинается, а по окончании разговора она отправляется на email. Но не зря же мы достали из шкафа большой внешний винт и подключили его к Askozia.Решим задачу по тотальной записи всех внешних разговоров. Добавим в настройки провайдера команды диалплана.


Открываем настройки провайдера Манго Офис, и прописываем параметры в соответствующие поля на закладке Дополнительно:

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

Настройка мобильных

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

Факсы

Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.

Учитывая тот факт что библиотека chan_sip не актуальна, будем рассматривать настройку через PJSIP. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.

Отключение chan_sip

В файле /etc/asterisk/modules.conf необходимо найти и убрать ; перед строкой noload => chan_sip.so

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

Структура Asterisk

Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/ . Перечислю основные файлы которые нам потребуются для начальной настройки.

Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf и pjsip.conf

Часть функций а также повторная загрузка данных из конфигурационных файлов происходит с помощью консоли Asterisk. Зайти в консоль можно так:

Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:

Полный список консольных команд с описанием можно прочитать в моей статье

Подключение пользователей

Добавление новых пользователей происходит в файле pjsip.conf. Конфигурационный файл pjsip.conf состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT и AOR которые должны быть одинаковые с заголовком SIP URI.

Перечислю возможные типы секций:

В каждой секции есть опция type содержащая назначение секции в общей конфигурации.

Создание первого пользователя

Создадим учетную запись нашего первого пользователя в Asterisk. Пользователь может подключаться с SIP телефона либо софтфона. Для удобства я заполняю конфигурационные файлы добавляя новые данные в конец файла. Также очень удобно удалить все и создать чистый файл для удобства чтения. Откроем файл pjsip.conf для редактирования

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

В данном пример я добавил минимально необходимую информацию о пользователе для его регистрации на сервере Asterisk. Давайте разберем подробнее что мы написали:

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

И введем команду повторной загрузки настроек из файла pjsip.conf

Теперь запустим SIP телефон и настроем учетную запись 1000 на нём. В работе я использую софтфон MicroSIP. Он мне нравится за свою компактность и возможность работы в portable режиме.

Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.

Создание шаблона

Использование шаблонов также полезно для разделения сотрудников из разных отделов с разным уровнем доступа. Название шаблона указывается в квадратных скобках [] затем идет (!)

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

Применение шаблона

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

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

Маршрутизация вызовов
Структура файла extensions.conf

Файл имеет две обязательные секции general и globals. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.

Рассмотрим параметры секции [general]

Перейдем к параметрам секции [globals]

В Asterisk могут использоваться как глобальные переменные так и переменные канала. Есть еще переменные окружения, они обеспечивают доступ из Asterisk к переменным окружения unix.

Глобальные переменные могут быть определены в секции [globals] либо с помощью команды SetGlobalVar в плане набора номера. Глобальная переменная отличается тем, что работает для всего файла exntensions.conf. Переменные канала используются в том диалплане в котором они определены.

В глобальных переменных удобно хранить длинные добавочные номера, время работы (при использовании автосекретаря) и другие часто используемые переменные. Пример секции [globals]

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

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

Я написал контекст с названием from-internal далее указал что при звонке на добавочный 1000 будет происходить дозвон номера 1000 через интерфейс PJSIP. При создании пользователя Asterisk в файле pjsip.conf в разделе настройки endpoint мы указываем поле context=from-internal. Это означает что совершая вызов данный пользователь будет руководствоваться правилами указанными в контексте [from-internal] файла extensions.conf

Процесс вызова

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

Формат записи такой: exten = имя,приоритет,приложение(параметры)

Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload

Как вы уже заметили, комментарии можно писать сразу после ;

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

Приоритет можно заменить буквой n но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.

Используя same вместо exten можно не писать в каждой строке добавочный 1000. Но как и в случае с n в первой строке указывать exten обязательно.

Системные добавочные номера

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

Шаблоны номеров

Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _

Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:

Вложение контекстов

Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.

В контексте from-internal сначала будет обрабатываться шаблон _XXXX затем вложенный контекст include=long

Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду dialplan show

Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера SIPNET. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в pjsip.conf

Настройка внешнего провайдера

Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf

Открываем файл pjsip.conf

Добавляем в конец файла регистрацию транка провайдера

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

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

Настроим входящую маршрутизацию

Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET

Вставим следующий текс в конец файла

Можно добавить обработку входящего вызова по времени.

В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime будет переход на метку work. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork.

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

Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.

Смотрите видео по настройке

Asterisk SIP trunk

Соединение обозначенное как user, это определение любой системы или оконечной точки (endpoint), которой мы разрешаем входящие вызовы на наш сервер Asterisk. Соединение type=user не обозначает никакого пользователя, а только создает канал и указывает контекст, для входа в диалплан аутентифицированных входящих вызовов.
Через соединение обозначенное как peer совершаются исходящие вызовы.

Asterisk Register String

register ⇒ sipuser[:secret[:authuser]]@host[:port][/extension]

sipuser - идентификатор пользователя на SIP сервере провайдера. authuser - не обязательное имя пользователя для авторизации на SIP сервере port - на какой порт посылать запросы регистрации серверу host. Если не задано, то по умолчанию - 5060 /extension - расширение для обработки вызовов в диалплане Asterisk. Extension - подставляется в SIP заголовок <contact>. Это значение используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону Asterisk. Задайте в контексте транка соответствующее расширение, для обработки входящих вызовов, например: exten ⇒ _1234567,1,Queue(queuename), где 1234567 - extension. Если данный параметр не указан в строке регистрации, удаленный SIP сервер, вероятнее всего, использует параметр sipuser в качестве идентификатора вызова.

Вышеприведенный пример, упрощенный вариант строки регистрации. Полный вариант содержит больше информации:
register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][

Обратите внимание на параметр transport, например tls:
register => tls://user:password@host

Строка регистрации имеет напрямую связанные с ней параметры [general]:

registertimeout=20 - повторять попытки регистрации каждые 20 секунд (по умолчанию) registerattempts=10 - кол-во неудачных попыток регистрации. По умолчанию - 0 (т.е. продолжать бесконечно) sip show peers - Отобразить все пиры и их статус. sip show peer <имя пира> - Показать конфигурацию определенного пира. sip show registry - Отобразить статус регистраций на удаленном UAS. sip reload - Перечитать конфигурационный файл. sip show settings - Показать текущую конфигурацию chan_sip.

Для получения подробной информации о командах смотрите Asterisk CLI - интерфейс командной строки.

Пример вывода команды sip show registry в консоли Asterisk:

Возможные состояния (state):

Request Sent - запрос отправлен, ожидает ответа. No Authentication - ответ отрицательный, регистрация отвергнута.

Asterisk SIP peer

Для совершения исходящих вызовов должен быть создан объект type=peer.

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

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

friend: Запись, которая одновременно и user и peer. Этот тип, как правило, задается телефонам и другим оконечным устройствам. Для SIP пользователей этого типа Asterisk создаёт два объекта, один type=peer и один type=user, с одинаковыми именами.

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

В диалплане (extensions.conf ) можно использовать разнообразный синтаксис для вызова (dial ) SIP устройств.

В файле extensions.conf, для совершения исходящих вызовов, у Вас должно присутствовать правило набора, примерно такого вида:

Где from-siptrunk контекст заданный user или friend объекту.

Настройка SIP пира для регистрации внутренних абонентов

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

Рассмотрим некоторые опции:

host - dynamic или ip адрес с которого подключается абонент. type - для абонентского пира это обычно friend secret - пароль, использование сложных паролей убережет вас от многих неприятностей, даже если вы считаете сеть безопасной, в дальнейшем все может измениться и ваша предусмотрительность окажется очень кстати. nat = force_rport - использовать rport, даже если его нет directmedia - направлять медиа поток (RTP трафик) через сервер или напрямую между каналами (пирами). port - порт SIP сигнализации устройства (не путайте c bindport asterisk, который для данного драйвера SIP в Asterisk может быть только один, 5060 по умолчанию, но для нового драйвера Asterisk pjsip.conf, может, или даже должен, быть назначен уникальный порт для каждого транспорта) deny - сети из которых запрещено подключение permit - сети из которых разрешено подключение (если абонент находится в локальной сети, назначьте ему параметр permit=192.168.1.0/255.255.255.0 и регистрация на этом пире будет разрешена только из этой подсети. ACL очень действенная мера безопасноcти. См. также Asterisk:acl.conf call-limit -сколько одновременных вызовов (concurrent calls) может производится через данный канал. Хорошая идея, как для локальных так и для удаленных абонентов. Если пир взломан, злоумышленники не смогут пропустить через канал больше указанного кол-ва вызовов зараз(ы). pickupgroup - Группа перехвата. Назначьте одинаковый номер группы для телефонов, которые должны перехватывать вызовы друг у друга при помощи featurecode - pickupexten, назначенного в features.conf

Настройка нескольких SIP пиров по шаблону

А затем определить уникальные свойства пиров, добавив рядом с именем каждого пира, имя общего шаблона в круглых скобках:

Полный список параметров general sip.conf

Следующие параметры используются в общей [general] секции sip.conf:

allowexternalinvites

allowguest

allowoverlap

Вкл. или Выкл набор по одной цифре (т.е. каждая набранная цифра будет сразу отправляться в канал)

allowsubscribe

allowtransfers

alwaysauthreject

autodomain

bindaddr and bindport

Вы можете задать независимые для UDP, TCP и TLS транспорта значения udpbindadd, tcpbindaddr и tlsbindaddr

buggymwi

callevents

checkmwi

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

compactheaders

Использовать или нет компактные SIP заголовки.

defaultexpiry

Срок действия регистрации в секундах для входящих и исходящих регистраций. При входящей регистрации, этот параметр задается клиентской стороной, и заданное здесь значение используется, только если клиент не сообщил свое занчение. Для исходящих регистраций этот параметр сообщается удаленной стороне UAS (user agent server)

directrtpsetup

domain

dumphistory

externhost

externip

externrefresh

g726nonstandard

Значения: yes/no, по умолчанию: no. Если клиент собирается для сеанса связи «договориться» использовать звуковой кодек G726-32, с использованием компрессии AAL2, вместо RFC3551 (что требуется для аппаратов фирмы Sipura и шлюзов от Grandstream, и может другим). То это противоречит спецификации RFC3551, клиент должен вместо этого «договориться» использовать AAL2-G726-32

ignoreregexpire (global)

2)Realtime peers Когда peer сконфигурирован в режиме реального времени, информация о регистрации используется независимо от defaultexpiry

jbenable

jbforce

Принудительное использование jitter buffer принимающей стороной SIP канала.

jbimpl

jblog

jbmaxsize

Установите максимальную длину буфера в миллисекундах:

jbresyncthreshold

Джиттер буфер порог синхронизации. По умолчанию 1000:

icesupport

limitonpeers

Применять call-limit только для type=peer Это улучшит использование call-limit для устройств настроенных, как type=friend, отделив ограничение call-limit от входящих вызовов.

localnet

укажет серверу Asterisk какие подсети являются локальными, прозрачными для использования IP адресов сервера, SIP запросы к которым не требуют модификации поля Contact: c использованием externip или externhost

matchexterniplocally

maxexpiry

Максимальная продолжительность регистрации в секундах.

minexpiry

Минимальная продолжительность регистрации в секундах.

notifymimetype

notifyringing

Сообщать подписчикам о состоянии вызов (RINGING):

notifyhold

Сообщать подписчикам (subscribers) о состоянии удержание (HOLD):

pedantic

realm

recordhistory

Вкл. или Выкл историю sip для всех каналов.

registerattempts

registertimeout

Таймаут между попытками регистрации на другом устройстве.

relaxdtmf

rtautoclear

rtcachefriends

Если rtcachefriends включен, Asterisk будет кэшировать friends(реалтайм пиры), которые приходят из realtime engine, так же, как если бы они сконфигурированы в «sip.conf».

rtsavesysname

(global) Определяет, должен ли Asterisk сохранить SystemName в базе данных в режиме реального времени во время регистрации:

rtupdate

sipdebug

sendrpid

ОТправлять или нет Remote-Party-ID header:

srvlookup

transport

tcpenable

Включить поддержку TCP транспорта chan_sip Asterisk.

tcpbindaddr

Адрес на котором Asterisk «слушает» TCP подключения.

tcpauthtimeout

tcpauthtimeout указывает максимальное время в секундах данное клиенту на аутентификацию. Если за заданное время клиент не прошел проверку он отключается. (По умолчаннию 30 секунд)

tcpauthlimit

Максимальное кол-во неаутентифицированных сессий в момент любой времени.

t1min

subscribecontext

Ограничить запросы SUBSCRIBE только указанным контекстом, если не переопределено в настройках пира.

t38pt_udptl

tos_sip, tos_audio, andtos_video

trustrpid

Доверять или нет Remote-Party-ID header: Asterisk SIP trustrpid

useragent

Если вы не желаете сообщать, что используете Asterisk, напишите Cisco или Avaya, или abyrvalg v2.0.

usereqphone

usereqphone опция говорит Asterisk добавить «user=phone» в SIP URIs которые содержат действующий номер телефона:

Читайте также: