- Системные требования
- Проверьте перед установкой
- Установка АТС-коннектора
- Настройка FreePBX
- Настройка АТС-коннектора
- Завершение установки
- Affected dpma versions
- All asterisk based systems using d-series phones with dpma are affected, including:
- Asterisk based systems not covered above
- Dns-имя
- Docker
- Freepbx distro
- I. настройка во freepbx
- Let’s encrypt
- Pbxact
- Ssl-сертификат
- Stun-сервер
- Switchvox
- Thanks!
- Автоматизация установки
- Выпуск сертификата. certificate management.
- Драйвер chan_pjsip
- Драйвер chan_sip
- Другие интеграции
- Изучаем логику работы
- Инициализация скриптов и создание сервиса
- Конфигурация asterisk chan_pjsip
- Конфигурация asterisk chan_sip
- Настройка вызовов
- Настройка записи телефонных разговоров
- Настройка умной переадресации
- Общая настройка атс-коннектора
- Переходим в chan sip settings
- Подключение crm системы к атс-коннектору
- Последний штрих.
- Практическая часть
- Придумываем интеграцию заново
- Проверка
- Траблшутинг с верификацией на сервере
- Учётная запись sip для подключения webrtc-клиента
- Часть 1 – tls
- Часть 2 – srtp
- Этот домен припаркован компанией timeweb
- Tinycert – recommended
- A note about endpoint manager
Системные требования
АТС-коннектор устанавливается на сервер FreePBX (Asterisk).
Для установки и работы АТС-коннектора вам потребуется:
- Сервер с операционной системой Linux (CentOS, Fedora, Ubuntu) с ядром 2.6
- FreePBX v2.x
- IP АТС Asterisk 1.8.x / 11.x / 13.x / 16.x (начиная с версии 16.3)
Проверьте перед установкой
Перед установкой и настройкой АТС-коннектора, пожалуйста, проверьте:
- Компьютер, на который вы устанавливаете АТС-коннектор, удовлетворяет системным требованиям
- У вас есть доступ к компьютеру с правами администратора
- У вас есть установочный архив АТС-коннектора для вашей версии Asterisk
Установка АТС-коннектора
3.1. Для установки АТС-коннектора выполните следующие действия: в консоли на сервере Asterisk выполните команду (вы можете ее просто скопировать в консоль SSH):
Для Asterisk1.8
Настройка FreePBX
Проверьте настройки внутренних номеров (Applications – Extensions). Задайте значение поля
Outbound CID, оно должно быть задано в следующем формате “имя абонента” .
Внимание! На протяжении всей обработки звонка необходимо сохранять корректные значения полей
источника и назначения звонка, т.е. нельзя изменять добавочные в процессе обработки звонка –
например, на названиеномер линии)
Настройка АТС-коннектора
Для настройки АТС-коннектора откройте страницу Applications -> Prostie Zvonki.
Завершение установки
Для завершения установки перезагрузите Asterisk, выполнив в консоли управления Asterisk следующую
команду (команды можно писать в FreePBX -> Администратор -> Командная строка Астериск):
CLI> core restart now
Проверьте, загрузился ли АТС-коннектор командой:
CLI> module show like cel_prostiezvonki.so
Если в списке появился АТС-коннектор cel_prostiezvonki.so, то установка прошла успешно. Если модуль в
списке не появился, обратитесь к пункту «3.1. Asterisk не загружает модуль. Модуль не появляется в
списке загруженных модулей» руководства по решению вопросов для АТС-коннектора Asterisk.
Affected dpma versions
Any System running DPMA versions older than the following are affected:
- DPMA 3.4.13 for Asterisk 11, 13, 15, 16
- DPMA 3.5.7 for Asterisk 13, 15, 16, 17, 18
- DPMA 3.6.2 for Asterisk 13, 16, 17, 18
All asterisk based systems using d-series phones with dpma are affected, including:
- FreePBX systems using D-Phones and the deprecated Digium Phones module (Connectivity → Digium Phones)
- FreePBX and PBXact systems using D-Phones and using Endpoint Manager with DPMA enabled
If not using Sangoma (Digium) D Series phones, you are not affected.
Asterisk based systems not covered above
Consult the documentation of your system for the supported method of upgrading DPMA. The related Asterisk wiki page is here.
Dns-имя
Первое, что нужно для нормальной работы WebRTC — DNS-имя для вашего сервера Asterisk. В принципе, WebRTC будет работать и с IP-адресом, но такое решение годится только для тестирования. В описываемом примере DNS-имя сервера Asterisk будет fubar-pbx.local. Указывать DNS-имя где-либо в настройках самого сервера телефонии не обязательно, поэтому переходим к следующему пункту.
Docker
Если хочется быстро попробовать решение – есть вариант с Docker – быстро создать контейнер, дать ему порты наружу, подсунуть файлы настроек и попробовать (это вариант с LetsEncrypt контейнером, если сертификат уже есть, просто нужно перенаправить обратный прокси на веб сервер FreePBX (ему мы дали другой порт – 88), LetsEncrypt в докере по мотивам этой статьи
Запускать файл надо в скачанной папке проекта (после git clone), но предварительно залезть в конфиги астериска (папка asterisk) и прописать там пути к записям и URL вашего сайта
Freepbx distro
All supported versions of the FreePBX Distro using Asterisk 11 and higher have new DPMA rpm’s to the standard and devel repos. You can upgrade the DPMA rpm by doing System Updates in the normal way
I. настройка во freepbx
По умолчанию UDP-порты для FreePBX 13 – chan_sip@5061, chan_pjsip@5060. Изменим их на chan_sip@5060 и chan_pjsip@5062 перед началом настройки УАТС. Вы можете выбрать любые другие порты и сделать их по умолчанию.
В настройках SIP Asterisk «General SIP Settings» нужно выбрать какой порт назначен и для какой технологии. Выбрав Chan SIP по умолчанию, SIP будет использовать порт TLS 5061, а pjSIP будет использовать порт TLS 5161.
Let’s encrypt
Alternatively, you can use Let’s Encrypt, or LE. LE is a non-profit certificate authority. It provides free certificates for use across the web and has recently issued over a billion certificates.
Pbxact
All supported versions of PBXact using Asterisk 11 and higher have new DPMA rpm’s to the PBXact repos. You can upgrade the DPMA rpm by doing System Updates in the normal way
Ssl-сертификат
SSL-сертификат для работы WebRTC нужен обязательно. Соединение по websocket может быть нешифрованным, но голос может передаваться только по SRTP с использованием DTLS, наличие сертификата для этого обязательно. Для нормальной работы WebRTC, сертификат должен быть доверенным для всех браузеров, в которых будет запускаться WebRTC-клиент, поэтому сертификат придётся купить или воспользоваться корпоративным центром сертификации.
Для тестирования сгодится и сертификат, сгенерированный с помощью EasyRSA, открытый ключ полученного центра сертификации даже можно будет сделать доверенным для клиентов и использовать полученный сертификат в продашн. Естественно, в поле сертификата CN должно быть указано DNS-имя (или IP-адрес, если Вы всё-таки решили использовать IP-адрес).
yes | cp ./vars.example ./vars# Заполняем параметры EasyRSA приемлимыми значениямиsed -ri ‘s|^#set_var EASYRSA_REQ_COUNTRY[[:space:]] .*|set_var EASYRSA_REQ_COUNTRY «RU»|;s|^#set_var EASYRSA_REQ_PROVINCE[[:space:]] .*|set_var EASYRSA_REQ_PROVINCE «Province»|;s|^#set_var EASYRSA_REQ_CITY[[:space:]] .
*|set_var EASYRSA_REQ_CITY «City»|;s|^#set_var EASYRSA_REQ_ORG[[:space:]] .*|set_var EASYRSA_REQ_ORG «Organization»|;s|^#set_var EASYRSA_REQ_EMAIL[[:space:]] .*|set_var EASYRSA_REQ_EMAIL «root@fubar-pbx.local»|;s|^#set_var EASYRSA_REQ_OU[[:space:]] .*|set_var EASYRSA_REQ_OU «Unit»|’ ./vars
sed -ri ‘s|^#set_var EASYRSA_KEY_SIZE[[:space:]] .*|set_var EASYRSA_KEY_SIZE 2048|;s|^#set_var EASYRSA_ALGO[[:space:]] .*|set_var EASYRSA_ALGO rsa|;s|^#set_var EASYRSA_CA_EXPIRE[[:space:]] .*|set_var EASYRSA_CA_EXPIRE 3650|;s|^#set_var EASYRSA_CERT_EXPIRE[[:space:]] .
# Создаём ключ и сертификат центра сертификации./easyrsa —batch init-pki./easyrsa —batch —req-cn=»$(uuid)» build-ca nopass
# Создаём и подписываем сертификат для сервера./easyrsa —batch —req-cn=fubar-pbx.local gen-req FubarPBX nopass./easyrsa —batch sign server FubarPBX
# Конвертируем полученный сертификат в формат PEMopenssl x509 -in pki/issued/FubarPBX.crt -out pki/issued/FubarPBX.pem -outform PEM
Нужные нам файлы:./pki/ca.crt — сертификат центра сертификации./pki/issued/FubarPBX.pem — сертификат сервера./pki/private/FubarPBX.key — закрытый ключ сервера
Все эти файлы нужно загрузить через модуль FreePBX «Certificate Management» (выберите пункт «New Certificate» → «Upload Certificate» при добавлении сертификата)
В поле Private Key вставьте закрытый ключ, в поле Certificate — сертификат, в поле Trusted Chain — сертификат центра сертификации, затем нажмите «Generate Certificate» (FreePBX сохранит данные сертификата в файлы в директории /etc/asterisk/keys).
Stun-сервер
Даже если между клиентом и сервером не будет NAT, для нормальной работы WebRTC требуется наличие механизма ICE, как минимум, для того, чтобы клиент и сервер могли определить, какой из своих IP-адресов указывать в SDP. Совсем без ICE, WebRTC работать не будет, т.к. в заголовки c= в SDP будут вписываться либо все IP-адреса хоста, либо ни одного.
Для реализации ICE мы поднимем простой STUN-сервер, он не поможет нам обойти большую часть современных NAT, но от него это и не требуется. NAT будем обходить с помощью привычного механизма SIP Comedia, а STUN здесь нужен для того, чтобы клиент и сервер WebRTC могли определить правильный IP-адрес для подстановки в SDP.
STUN-сервер желательно установить на другом хосте (не на сервере Asterisk), на CentOS 6 можно поставить из EPEL пакет stun-server. Для работы STUN-сервера необходимо наличие двух IP-адресов, в нашем случае это будут адреса 192.168.100.55/24 и 192.168.100.56/24, оба настроены на сетевом интерфейсе eth0.
Также нам понадобится init-скрипт для STUN-сервера (в пакет stun-server он почему-то не входит), приведённый init-скрипт был позаимствован здесь
#!/bin/sh## Startup/shutdown script for the STUN-Server## Linux chkconfig stuff:## chkconfig: 35 90 10# description: Startup/shutdown script for the STUN-Server#
# Source function library.if [ -f /etc/init.d/functions ] ; then. /etc/init.d/functionselif [ -f /etc/rc.d/init.d/functions ] ; then. /etc/rc.d/init.d/functionselseexit 0fi
DAEMON=/usr/sbin/stun-serverIP1=192.168.100.55IP2=192.168.100.56
prog=stun-server
Switchvox
Switchvox systems are affected by this issue. Consult the appropriate resources on this page.
Thanks!
Hopefully this guide was helpful for installing a free certificate into FreePBX. Get in touch with any suggestions: hi@xga.ie
Автоматизация установки
На github начата разработка инсталятора, чтоб можно было устанавливать еще проще. Но гладко было на бумаге – пока устанавливаем все это вручную, благо после ковыряния во всем этом стало кристально ясно , что с кем дружит, кто куда ходит и как это дебажить. Инсталлятора пока нет (
Выпуск сертификата. certificate management.
Это первый камень преткновения на который наткнется администратор не знакомый с сертификацией. Не понимаю, почему эта опция описывается в середине настройки, а точнее не описывается, а упоминается, что это надо сделать. Не буду вдаваться в теорию, напишу как надо сделать, что бы все работало.
Заходим
Драйвер chan_pjsip
Выберите сертификат для использования. Сертификаты устанавливаются в модуле “Certificate Manager” на вашей УАТС.
Установите «Метод SSL» (“SSL Method”) для использования «sslv2»
Установите «Проверять клиента» (“Verify Client”) и “Проверять сервер” (“Verify Server”) на «Да» (“Yes”).
Измените “Транспорт” (“Transport”), “Шифрование мультимедиа” (“Media Encryption”) и “Требовать шифрование RTP (Media)” (“Require RTP (Media) Encryption”) как показано на рисунке ниже.
Если телефон уже настроен в EPM, переустановите конфигурацию для SIP-аккаунта, на котором вы будете использовать SRTP или TLS, на основе настроек, которые вы произвели, и перезагрузите телефоны. После перезагрузки телефоны будут использовать SRTP и TLS.
Драйвер chan_sip
После того, как будут выполнены предварительные настройки, мы включим TLS/SSL/SRTP в настройках “Asterisk SIP Settings” (Далее мы рассмотрим как настроить шифрование, используя драйвер pjSIP).
Установите «Включить TLS» (“Enable TLS”) на «Да» (“Yes”)
Выберите сертификат для использования. Сертификаты устанавливаются в модуле “Certificate Manager” на вашей УАТС.
Установите «Метод SSL» (“SSL Method”) для использования «sslv2»
Установите «Не проверять сервер» (“Don’t Verify Server”) на «Нет» (“No”). (Это кажется немного противоречивым, но мы хотим проверить как это будет работать).
Измените расширения, которые вы хотите включить TLS/SRTP, на вкладке расширений включите TLS и SRTP, как показано в примере ниже.
Другие интеграции
А почему бы заодно не сунуть несколько CRM в скрипты, подумали мы. Изучили несколько API других CRM, особенно бесплатной встроенной в некоторые АТС – ShugarCRM и Vtiger, и да! можно, принцип тот же. Но это уже другая история, которую потом будем заливать на гитхаб отдельно.
Ссылки
Дисклеймер: любые совпадения с реальность вымышлены и это был не я,
Изучаем логику работы
Итак для начала, как все это должно работать. При поступления звонка извне на АТС (событие SIP INVITE от провайдера) начинается обработка диалплана(плана набора, dialplan) – правил, что и в каком порядке делать со звонком. Из первого пакета можно получить много информации, которую потом можно использовать в правилах.
Отличным инструментом для изучения внутренностей SIP является анализатор sngrep (ссылка) который просто ставится в популярных дистрибутивах через apt install/yum install и подобное, но можно и из исходников собрать. Посмотрим лог звонка в sngrep
В упрощенном виде диалплан занимается только первым пакетом, иногда также в процессе разговора совершается перевод звонков, нажатия кнопок (DTMF), разные интересности типа FollowMe, RingGroup, IVR и прочего.
Что внутри Invite пакета
Собственно большинство простых диалпланов работают с первыми двумя полями и вся логика крутится вокруг DID и CallerID. DID – куда звоним, CallerID – кто звонит.
Но ведь у нас фирма а не один телефон – и значит в АТС скорее всего есть группы вызова (одновременный/последовательный звонок нескольких аппаратов) на городских номерах (Ring Group), IVR (Здравствуйте, вы позвонили… Нажмите один для…), Автоответчики (Phrases)
, Временные условия (Time Conditions), Переадресация на другие номера или на сотовый (FollowMe, Forward). Это значит, что однозначно определить кому на самом деле придет вызов и с кем будет разговор при поступлении вызова очень сложно. Вот пример начала прохождения типового вызова в АТС наших клиентов
После успешного входа звонка в АТС происходит путешествие его по диалплану в разных “контекстах”. Контекст с точки зрения Asterisk – это нумерованный набор команд, каждая из которых содержит фильтр по набранному номеру (он называется exten, для наружного вызова на начальном этапе exten=DID).
Командами в строке диалплана может быть все что угодно – внутренние функции (например позвонить внутреннему абоненту – Dial(), положить трубку – Hangup()), условные операторы (IF, ELSE, ExecIF и подобные), переходы к другим правилам этого контекста (Goto, GotoIF), переход другим контекстам в виде вызова функций (Gosub, Macro).
Вся логика работы FreePBX построена на включении друг в друга разных контекстов через include и вызов через Gosub, Macro и обработчики Handler. Рассмотрим контекст входящих вызовов FreePBX
Вызов проходит по всем контекстам сверху вниз по очереди, в кажом контексте могут быть вызовы других контекстов как макросов (Macro), функций(Gosub) или просто переходы (Goto), поэтому реальное дерево того, что вызывается можно отследить только в логах.
Типовая схема настройки типичной офисной АТС показана ниже. При вызове во входящих маршрутах ищется DID, по нему проверяются временные условия, если все в порядке – запускается голосовое меню. Из него по кнопке 1 или таймауту выход на группу дозвона операторов.
Где в этом алгоритме звонка мы должны поставлять информацию о начале звонка в CRM, где начинать запись, где оканчивать запись и отсылать ее вместе с информацией о звонке на CRM?
Инициализация скриптов и создание сервиса
Поскольку схема работы с Битрикс 24, сервисом для AMI не совсем проста и прозрачна, на ней надо остановится отдельно. Астериск при активации AMI просто открывает порт и все. При присоединении клиента она запрашивает авторизацию, потом клиент подписывается на нужные события.
Как только звонок поступает, возникает событие NewExten начиная с родительского контекста [from-pstn], затем идут все события по порядку следования строк в контекстах. При получении информации из заданных в диалплане _custom переменных CallMeCallerIDName и CallStart вызывается
Конфигурация asterisk chan_pjsip
Теперь давайте настроим драйвер PJSIP канала Asterisk для использования TLS.
В файле конфигурации /etc/asterisk/pjsip.conf вам необходимо включить транспорт с поддержкой TLS. Примером может быть следующим:
[transport-tls] type=transport protocol=tls bind=0.0.0.0:5061 cert_file=/etc/asterisk/keys/asterisk.crt priv_key_file=/etc/asterisk/keys/asterisk.key method=tlsv1
Обратите внимание на protocol, cert_file, priv_key_file и method. Здесь мы используем протокол TLS, мы указываем ключи, которые мы сгенерировали ранее для cert_file и priv_key_file, и установили метод TLSv1.
Затем необходимо указать SIP-клиенту использование протокола TLS. Пример ниже:
Конфигурация asterisk chan_sip
В файле конфигурации /etc/asterisk/sip.conf установите следующее:
tlsenable=yes tlsbindaddr=0.0.0.0 tlscertfile=/etc/asterisk/keys/asterisk.pem tlscafile=/etc/asterisk/keys/ca.crt tlscipher=ALL tlsclientmethod=tlsv1
Здесь мы активируем поддержку TLS.
Мы привязываем TLS к нашему локальному IPv4 (по умолчанию для порта TLS – 5061) адресу.
Мы установили файл сертификата TLS тот, который мы создали выше.
Мы установили Центр сертификации тот, который мы создали выше.
Шифры TLS установлены на ВСЕ, поскольку это наиболее подходящий вариант.
И мы установили SIP-метод аутентификации TLS в TLSv1, так как это предпочтительнее для RFC и для большинства SIP-клиентов.
Затем вам нужно настроить SIP-аккаунт в Asterisk для использования TLS в качестве транспортного протокола. Вот пример:
[maksim] type=peer secret=mypassword host=dynamic context=local dtmfmode=rfc2833 disallow=all allow=g722 transport=tls
Обратите внимание на вариант transport. Драйвер канала Asterisk SIP поддерживает три типа: udp, tcp и tls. Поскольку мы настраиваем TLS, мы его и установим. Также можно указать несколько поддерживаемых типов транспорта для партнера, разделив их запятыми.
Настройка вызовов
1. Если вам нужно добавлять префикс к номерам телефонов при входящих звонках, вы можете задать
его в параметре Префикс для входящих.
2. Если вам нужно добавлять префикс к номерам телефонов при исходящих звонках (при использовании
функции «Звонок по клику»), вы можете задать его в параметре Префикс при исходящих.
3. Если вы используете не SIP телефоны, а телефоны, которые общаются по другому протоколу
(например IAX2), то измените тип канала в параметре Тип канала на соответствующий.
Настройка записи телефонных разговоров
АТС-коннектор использует систему записи разговоров FreePBX.
Настройка умной переадресации
Умная переадресация – перехват клиентских звонков и их автоматическое перенаправление на
телефоны ответственных сотрудников. Для включения переадресации выполните следующие действия:
1. В FreePBX зайдите на страницу Входящая маршрутизация и выберите входящий маршрут, для
которого будет использоваться умная переадресация.
2. Для включения умной переадресации поставьте галочку напротив параметра
Умная переадресация.
3. Зайдите в Applications -> Prostie Zvonki.
4. Установите таймаут (в секундах) для поиска номера ответственного сотрудника в параметре
Таймаут поиска. Если АТС-коннектор не получит от модуля CRM (базы клиентов) номер ответственного
сотрудника за данный промежуток времени, то дальнейшая обработка вызова перейдет к АТС Freepbx
(Asterisk).
Общая настройка атс-коннектора
1. При необходимости, измените директорию и имя лог файла в параметре Лог файл.
2. При необходимости, измените уровень записи лога в параметре Уровень записи лога.
3. Если соединение между АТС-коннектором FreePBX (Asterisk) и модулем CRM (базы клиентов)
прерывается, то история звонков накапливается в специальной очереди. При подключении модуля CRM
история звонков автоматически загружается из этой очереди.
Для сохранения истории звонков за 1 день (при отсутствии подключения модуля CRM!) установите
значение параметра Размер очереди событий таким образом, чтобы оно было в 2 раза больше
среднего числа звонков за день.
Переходим в chan sip settings
Выставляем настройки как на рисунке ниже. Именно здесь выбирается сертификат, созданный ранее.
Обратите внимание на «Don’t Veryfy Server» должно стоять значение «No», «Yes» выставляется если у вас все провайдеры поддерживают шифрование. Enabled TLS отвечает за активацию кнопок в первом разделе, о которой говорил выше.
Последняя настройка, которая может влиять на активность кнопок. Необходимо, что бы «Bind Port» и «TLS Bind Port» не совпадали!
Подключение crm системы к атс-коннектору
В окне настроек модуля «Простые звонки» вашей CRM системы задайте:
1. Адрес сервера, на котором установлен АТС-коннектор.
Адрес сервера состоит из префикса, хостнейма и порта. Например: ws://atsoffice:10150
Префикс
- Если в настройках АТС-коннектора параметр use_ssl установлен в false, используйте префикс ws://,
например: ws://atsoffice:10150 - Если в настройках АТС-коннектора параметр use_ssl установлен в true, используйте префикс wss://,
например: wss://atsoffice:10150
ХостнеймПосле префикса укажите локальный («внутрисетевой») хостнейм сервера (вы можете указать IP адрес
сервера только если в настройках АТС-коннектора параметр use_ssl установлен в false). Компьютеры
пользователей CRM системы должны «видеть» сервер по сети.
Указывайте локальный («внутрисетевой») хостнейм сервера, даже если вы собираетесь использовать
«облачную» CRM систему (например amoCRM, Битрикс24, Мегаплан и т.п.). Пользователи «облачной»
CRM системы устанавливают TCP соединение с АТС-коннектором из браузера, запущенного на своем
компьютере.
ПортПосле названия или IP адреса сервера через символ «двоеточие» укажите порт, на котором АТСконнектор принимает входящие подключения. Порт задается параметром port в конфигурационном
файле АТС-коннектора (или в окне настроек). Значение по умолчанию: 10150.
2. Пароль для работы с АТС-коннектором, если был задан параметром password в конфигурационном
файле АТС-коннектора (или в окне настроек). Если значение параметра password не задано, оставьте
поле «Пароль» пустым или укажите 0 (если поле «Пароль» является обязательным в окне настроек
модуля «Простые звонки» вашей CRM системы).
7.1.2. Пароль для работы с АТС-коннектором, если был задан параметром password в
конфигурационном файле АТС-коннектора (или в окне настроек). Если значение параметра password не
задано, оставьте поле «Пароль» пустым или укажите 0 (если поле «Пароль» является обязательным в
окне настроек модуля «Простые звонки» вашей CRM системы).
Последний штрих.
Общая настройка шифрования закончилась, осталось включить шифрование в транках. Делается это в каждом транке отдельно. Заходим: ConnectivityTrunks Выбираем нужный транк и идем в меню: sip SettingsOutgoing В поле PEER Details в конце добавляем две строчки: transport=tls encryption=yes
На этом
все!!! Осталось проверить.
Практическая часть
apt-get install libsrtp0-dev
Придумываем интеграцию заново
Для того, чтоб наш FreePBX мог сообщать в AMI простыми способами о начале звонка, времени окончания, номерах, именах записанных файлов, рассчитывать длительность звонка проще всего воспользоваться тем же трюком, что и исходные авторы – ввести свои переменные и парсить вывод на их присутствие. PAMI предлагает это делать просто через функцию-фильтр.
Вот пример задания своей переменной для времени начала звонка (s – это специальный номер в диалплане, который выполняется ДО начала поиска по DID)
[ext-did-custom]
exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})Пример AMI события по этой строке
Поскольку FreePBX перезаписывает файлы extention.conf и extention_additional.conf, мы будем использовать файл extention_custom.conf
Проверка
Внутреннему номеру прописываем маршрут через шифрованный транк и совершаем звонок на свой сотовый (либо любой телефон, где звонок будет принят и удержан). После установления связи и удержании звонка идем: ReportsAsterisk InfoChannels
И по номеру, на который звоним, находим свой канал
Траблшутинг с верификацией на сервере
Если хост или IP-адрес, используемые для общего имени в вашем сертификате, не совпадают с вашим сервером, тогда вы можете столкнуться с проблемами, когда ваш клиент делает вызов через Asterisk. Убедитесь, что у клиента настроено – не проверять сервер на соответствие сертификату.
При вызове из Asterisk через софтфон вы можете столкнуться с ERROR в CLI Asterisk, подобным этому:
Учётная запись sip для подключения webrtc-клиента
Создайте обычную учётную запись для канала chan_sip и укажите дополнительно следующие параметры:
NAT Mode: Yes — (force_rport,comedia)Transport: WSS OnlyEnable AVPF: YesForce AVP: YesEnable ICE Support: YesEnable rtcp Mux: YesEnable Encryption: Yes (SRTP only)Enable DTLS: YesUse Certificate: FubarPBX (выберите из списка загруженный ранее сертификат)DTLS Verify: FingerprintDTLS Setup: Act/Pass
Те же дополнительные параметры для указания в файле sip.conf в том же порядке:
nat=force_rport,comediatransport=wssavpf=yesforce_avp=yesicesupport=yesrtcp_mux=yesencryption=yesdtlsenable=yesdtlscertfile=/etc/asterisk/keys/FubarPBX.crtdtlsprivatekey=/etc/asterisk/keys/FubarPBX.keydtlsverify=fingerprintdtlssetup=actpass
Для примера был создан номер 100 со случайным паролем.
Часть 1 – tls
Создание ключей безопасностиСоздадим директория хранения ключей безопасности
mkdir /etc/asterisk/keys
Затем, используя скрипт “ast_tls_cert” из исходного каталога “contrib/scripts” в Asterisk, создадим самоподписной центр сертификации (Certificate Authority) и сертификат для Asterisk.
Часть 2 – srtp
Теперь, когда мы включили TLS, наша сигнализация безопасна, поэтому больше никто не узнает, какие расширения используются нами на PBX. Но наши вызовы по-прежнему не защищены, поэтому кто-то может отследить наши разговоры RTP. Давайте это исправим.
Поддержка SRTP обеспечивается libsrtp. libsrtp должен быть установлен на сервере до компиляции Asterisk, иначе вы увидите что-то вроде:
[Jan 24 09:29:16] ERROR[10167]: chan_sip.c:27987 setup_srtp: No SRTP module loaded, can't setup SRTP session.
на вашем CLI Asterisk. Если вы это видите, установите libsrtp (это для тех, кто читает статью с конца), а затем переустановите Asterisk (./configure; make; make install).
Давайте вернемся к нашим pee настройкам в sip.conf. Добавляем строку шифрования:
[maksim] type=peer secret=mypassword host=dynamic context=local dtmfmode=rfc2833 disallow=all allow=g722 transport=tls encryption=yes context=local
На этом все.
Этот домен припаркован компанией timeweb
Tinycert – recommended
I recommend using TinyCert to generate your SSL certificate. I have used TinyCert for a few years now to manage ‘my own’ Certificate Authority. The certificate will also last for one year so requires less ‘maintenance’ than Let’s Encrypt.
A note about endpoint manager
DPMA module upgrades unrelated to this SSL issue may cause issues with older versions of Endpoint Manger (EPM). For systems using DPMA with EPM please consult the wiki page here for more information.
