PJSIP: Подключение абонентов. Идеология конфига
Мы продолжаем цикл статей по библиотеке PJSIP, в этой статье будет подключение абонентов на примере FreePBX Distro 15 (Asterisk 16). Статьи по PJSIP: Установка Asterisk 16 на centos 8 TLS SRTP для драйвера PJSIP в Asterisk 15 Pjsip. Базовая настройка. Идеология настройки. Описание параметров конфигурации PJSIP в Asterisk с примерами Работа PJSIP за NAT Вопросы […]
Мы продолжаем цикл статей по библиотеке PJSIP, в этой статье будет подключение абонентов на примере FreePBX Distro 15 (Asterisk 16).
Статьи по PJSIP:
Установка Asterisk 16 на centos 8
TLS SRTP для драйвера PJSIP в Asterisk 15
Pjsip. Базовая настройка. Идеология настройки.
Описание параметров конфигурации PJSIP в Asterisk с
примерами
Работа PJSIP за NAT
Вопросы безопасности канала PJSIP в Asterisk
Настройка realtime для PJSIP на Centos 7
Приступим к подключению абонентов и по ходу разберём конфигурацию.
Добавление внутренних номеров задаётся в файле pjsip.conf по умолчанию расположен он в каталоге /etc/asterisk/. Файл внутри условно поделен на секции, а Freepbx разделяет секции на отдельные .conf файлы. Внутри секции разделяются именами, которые заключены в [квадратные скобки]. После идёт конфигурация содержащая в себе опцию и её значение через знак = равно.
Файлы pjsip в каталоге /etc/asterisk
Для подключения нам понадобятся секции endpoint, auth, aor и transport.
Transport
Секция transport. Настраивает протоколы для передачи данных. UDP, TCP, WebSockets (WS, WSS) и методы шифрования TLS/SSL.
В FreePBX настройка производится в settings — Asterisk SIP settings — SPI Settings [chan_pjsip]
Есть важное ограничение при создание секций транспорта:
Они не могут использовать одну и ту же комбинацию IP + порт или IP + протокол. То есть каждая секция, которая связывается с тем же IP-адресом, что и другая, должна использовать отличный порт или протокол.
Для простого звонка нам будет достаточно и базовых настроек FreePBX.
Отмечу, что при изменение настроек протоколов для их применения необходимо перезагрузить Asterisk.
Можно обойтись и без перезагрузки если выставить опцию на транспорте allow_reload=yes, однако он приводит к сбросу вызова и еще ряду проблем.
Сделать это лучше через консоль :
systemctl stop asterisk — останавливаем asterisk
systemctl status asterisk — проверяем его статус
systemctl start asterisk — запускаем asterisk
systemctl status asterisk — проверяем что он запустился
Можно перезагрузить и через интерфейс CLI командой
freepbx*CLI> core restart now
Чтобы войти в интерфейс CLI на сервере введите
asterisk -r
Посмотрим в CLI изменился ли транспорт для этого вводим команду
freepbx*CLI> pjsip show transports
Отлично, теперь рассмотрим конфигурацию этой секции на нашем примере.
[tcp-transport]
type=transport
protocol=tcp
bind=0.0.0.0:5060
external_media_address=98.76.54.32
external_signaling_address=98.76.54.32
allow_reload=no
tos=cs3
cos=3
local_net=192.168.32.0/24
type — тип секции
protocol — используемый протокол
bind — привязывает IP адрес и порт, которые будет использовать эта секция
external_media_address — указывает внешний ip-адрес АТС при нахождении ее за NAT для RTP протокола
external_signaling_address — указывает внешний ip-адрес АТС при нахождении ее за NAT для SIP сигнализации
tos=0 — включает TOS по умолчанию 0
cos=0 — включает COS по умолчанию 0
local_net — указывается локальная сеть, используется если есть NAT
Как узнать возможные варианты значений и параметры по умолчанию?
В этом поможет встроенная справка интерфейса командной строки (CLI):
config show help res_pjsip <секция> <опция>
Секция Endpoint
Endpoint определяет многочисленные параметры SIP , а также связь с такими секциями как auth, aor, transport. Endpoint по сути профиль для конечной точки, такой как телефон или удаленный сервер.
В FreePBX настраиваются сразу все эти секции. Для этого переходим в Applications — Extensions , чтобы добавить номер выбираем Add Extension — Add New SIP [chan_pjsip] Extension
Во вкладке General
Add Extension
User Extension: 101 — Задаём номер данному пользователю
Display Name: Phonerlite — Имя пользователя
Secret: <пароль пользователя> — генерируется автоматически, можно задать свой.
Этих настроек будет достаточно для
простых звонков внутри локальной сети, да и для звонков через транк тоже вполне
хватит.
Применяем настройки кнопкой Submit затем Apply Config.
После применения настроек, можно подключать нашего первого абонента.
Как настроить и установить софтфон или IP телефон можно найти у нас на сайте.
В CLI можно посмотреть настройки extensions с помощью команды
freepbxCLI> pjsip show endpoints — показывает все заведенные endpoints freepbxCLI> pjsip show endpoint 101 — покажет 101 endpoint
Теперь рассмотрим файл конфигурации endpoint, который был автоматически сгенерирован и выделим только самое необходимое, для создания вызова.
type — тип здесь указывается, что эта секция endpoint
context — контекст диалплана, за него отвечает файл extensions.conf
disallow — запрещает медиа кодеки, можно запретить несколько (ulaw&g729)
allow — разрешает медиа кодеки
transport — тип транспортного протокола для этого пользователя
aors — AoR используемая ENDPOINT
auth — Объект аутентификации соотнесенный с endpoint
;=====EXTENSION=====
[101]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=tcp-transport
auth=auth-101
aors=101
Секция AUTH
Отвечает за аутентификацию содержит в себе опции и полномочия для входящих и исходящих регистрации. Разные endpoint и registrations могут использовать одну и ту же секцию auth.
Задаём тип авторизации, пароль и логин.
type — тип auth
auth_type — тип аутентификации (md5 или userpass)
password — пароль для
аутентификации пользователя
username — имя абонента
[auth-101]
type=auth
auth_type=userpass
password=44cb21465ce223ee02265348bcabdd5b
username=101
Секция AOR (Address of Record)
Определяет как Asterisk будет связываться с endpoint. Если не задана секция AOR Asterisk не сможет подключиться к точкам быть то телефон или транк. Здесь также задаются соответствия голосовой почте, MWI, продолжительность действия регистрации -expiration и настройки qualify (периодической отправки SIP сообщений OPTIONS для мониторинга состояния устройств)
type — тип секции
max_contacts — максимальное число контактов SIP User Agent , которые могут быть подключены к этому aor. Если у вас например 3 устройства, но нужен только 1 внутренний номер.
qualify_frequency — время отправки keep alive на устройство
[101]
type=aor
max_contacts=1
qualify_frequency=60
Для применения настроек придется перезагрузить Asterisk.
В ClI это команда:
freepbx*CLI> core reload
Перезагрузить из консольный строки Linux
asterisk -rx «core reload»
Создадим ещё одного абонента с номером 102, он будет за NAT
При создании Extension, открываем вкладку Advanced
RTP Symmetric: Yes — отправляет носитель на адрес и порт, с которого Asterisk получает его, независимо от того, где SDP указывает, что его следует отправить.
Rewrite Contact: Yes — отправлять ответы на исходный IP-адрес и порт, как если бы порт присутствовал, даже если это не так
Force rport: Yes — переписать SIP. Контакт с адресом источника и портом запроса, чтобы последующие запросы перешли на этот адрес и порт.
Эти опции нужно добавить в секцию endpoint к нужному абоненту.
rtp_symmetric=yes
rewrite_contact=yes
force_rport=yes
Секцию transport мы уже подготовили для NAT и её можно не изменять.
Подробнее о Работе PJSIP за NAT
В софтфоне MicroSIP создаю аккаунт 102 . Так как я подключаюсь к роутеру на котором стоит проброс порта с 60101 на 5060 до Asterisk. В настройках аккаунта адрес сервера указываю с портом. PhonerLite 101 подключается напрямую. После успешного подключения, делаю вызов. Отвечаю на звонок, звук есть в обоих направлениях.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.