Настройка WebRTC в Asterisk (FreePBX)
Технические требования
- Сервер телефонии должен быть доступным из Интернет, т.е. иметь белый IP.
- Должен быть рабочий SSL/TLS-сертификат.
- Asterisk версии не меньше 11 (?), но для удобства желательно 15 (?) или хотя бы 13 (?).
- При использовании браузерного софтфона на сервере Asterisk должен быть настроен wss (WebSocket Secure), и порт должен быть открыт наружу (обычно 8089) (?).
Настраивается в интерфейсе администратора:
Advanced Settings > Asterisk Builtin mini-HTTP section > HTTPS Bind Port - Диапазон портов для RTP (обычно 10000-20000) (?).
Настраивается в интерфейсе администратора:
Settings → Asterisk SIP Settings → General SIP Settings Tab
Настройка
В данном примере рассматривается настройка WebRTC в уже работающем FreePBX-сервере:
- доступен по адресу .ru и имеет SSL/TLS-сертификат.
- FreePBX версии 16, Asterisk версии 15.
- настроен wss через порт 8089.
- открыты все остальные нужные порты.
Настройка FreePBX
Если кнопка “Change To CHAN_PjSIP Driver” (см. ниже, в настройке внутреннего номера) доступна, то в данном разделе ничего делать не нужно.
Settings ➝ Advanced Settings
| Раздел Dialplan and Operational | |
|---|---|
| SIP Channel Driver | both |
Settings ➝ Asterisk SIP Settings
Вкладка “SIP Legacy Settings [chan_sip]”
Проверить, что установлены переменные:
| Раздел Advanced General Settings | |
|---|---|
| Other SIP Settings | icesupport = yes media_encryption = dtls tlscipher = AES256-SHA |
Создание и настройка внутреннего номера (extension)
Зайти в интерфейс настройки FreePBX и залогиниться: https://<example>.ru/
Перейти в раздел Applications ➝ Extensions
Кнопка “+ Add Extension” ➝ “+ Add New SIP (Legacy) [chan_sip] Extension” (в других версиях FreePBX может быть “Add New Chan_SIP extension”)
Во вкладке General:
| Раздел Add Extension | |
|---|---|
| User Extension | 1001 |
| Display Name | 1001 |
Нажать кнопку Submit
После этого в списке расширений открыть редактирование только что созданного расширения (в строке с 5001 в колонке Actions нажать кнопку редактирования с иконкой с карандашом).
Перейти во вкладку Advanced
Сначала поменять SIP Driver на PjSIP:
| Вкладка Advanced → Раздел Edit Extension | |
|---|---|
| Change SIP Driver | Change To CHAN_PjSIP Driver Эта кнопка может быть недоступна, это значит, что PjSIP отключен, нужно его включить в настройках (см.выше). |
Теперь должна появиться возможность сделать следующие настройки:
| Вкладка Advanced → Раздел Edit Extension | |
|---|---|
| Enable WebRTC defaults | Yes |
| Media Encryption | DTLS-SRTP (not recommended) |
Нажать кнопку Submit
Потом поменять SIP Driver обратно:
| Вкладка Advanced → Раздел Edit Extension | |
|---|---|
| Change SIP Driver | Change To CHAN_SIP Driver |
Теперь сделать оставшиеся настройки:
| Вкладка Advanced → Раздел Edit Extension | |
|---|---|
| Transport | All - WSS Primary |
| Enable AVPF | Yes |
| Force AVP | Yes |
| Enable ICE Support | Yes |
| Enable rtcp Mux | Yes |
| Enable Encryption | Yes (SRTP only) |
| Раздел DTLS | |
| Enable DTLS | Yes (уже должно быть) |
| Use Certificate | <example>.ru |
Нажать кнопку Submit
Нажать кнопку Apply Config
Тестирование, что wss работает
Для примера воспользуемся сервисом sipML5 live demo от Doubango:
sipML5 — устаревший проект: его исходный код переведён в архив. Демо всё ещё доступно, поэтому шаги ниже сохранены для этой версии интерфейса.
Настройка
Сначала кнопка “Expert mode?”
В соседней вкладке должна открыться страница с продвинутыми настройками.
| Disable Video | v (галочка) |
|---|---|
| WebSocket Server URL | wss://.ru:8089/asterisk/ws |
Нажать кнопку Save
Вернуться на основную вкладку
| Display Name | 1001 |
|---|---|
| Private Identity | 1001 |
| Public Identity | sip:1001@<example>.ru |
| Password | Скопировать из настроек FreePBX Extension: 1001 ➝ вкладка General ➝ Edit Extension ➝ Secret |
| Realm | <example>.ru |
Кнопка Login
Вверху над заголовком Registration должно появиться слово Connected.
Звонок
Теперь можно звонить.
Под заголовком Call control набрать нужный номер (*43 для звонка на эхо или номер мобильника с 8 вначале).
Нажать кнопку Call ➝ Audio
Должен пойти звонок.
Profit!
Ссылки
Поддержка WebRTC в Asterisk
Начальная поддержка WebRTC в Asterisk начиная с версии 11:
- New in 11 - Asterisk Project - Asterisk Project Wiki
- Asterisk WebRTC Support - Asterisk Project - Asterisk Project Wiki
PjSIP в Asterisk
- Новый драйвер chan_pjsip в Asterisk 12: New in 12 - Asterisk Project - Asterisk Project Wiki
- PjSIP доступен по умолчанию в Asterisk 15: PJSIP-pjproject - Asterisk Project - Asterisk Project Wiki