> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/blog/nastroika-webrtc-v-asterisk-freepbx.md).

# nastroika webrtc v asterisk freepbx

## Технические требования

* **Сервер телефонии должен быть доступным из Интернет, т.е. иметь белый IP.**
* **Должен быть рабочий SSL/TLS-сертификат.**
* Asterisk версии не меньше 11 [(?)](broken://pages/bd1059c65e7cc2ab2d36a21028eb40d148eb634e#podderzhka-webrtc-v-asterisk), но для удобства желательно 15 [(?)](broken://pages/bd1059c65e7cc2ab2d36a21028eb40d148eb634e#pjsip-v-asterisk) или хотя бы 13 [(?)](broken://pages/bd1059c65e7cc2ab2d36a21028eb40d148eb634e#primery-nastroiki).
* При использовании браузерного софтфона на сервере Asterisk должен быть настроен wss (WebSocket Secure), и порт должен быть открыт наружу (обычно 8089) [(?)](broken://pages/bd1059c65e7cc2ab2d36a21028eb40d148eb634e#freepbx).\
  Настраивается в интерфейсе администратора:\
  Advanced Settings > Asterisk Builtin mini-HTTP section > HTTPS Bind Port
* Диапазон портов для RTP (обычно 10000-20000) [(?)](broken://pages/bd1059c65e7cc2ab2d36a21028eb40d148eb634e#freepbx).\
  Настраивается в интерфейсе администратора:\
  Settings → Asterisk SIP Settings → General SIP Settings Tab

## Настройка

В данном примере рассматривается настройка WebRTC в уже работающем FreePBX-сервере:

* доступен по адресу .ru и **имеет SSL/TLS-сертификат.**
* FreePBX версии 16, Asterisk версии 15.
* настроен wss через порт 8089.
* открыты все остальные нужные порты.

### Настройка FreePBX

{% hint style="danger" %}
Если кнопка “Change To CHAN\_PjSIP Driver” (см. ниже, в настройке внутреннего номера) доступна, то в данном разделе ничего делать не нужно.
{% endhint %}

**Settings ➝ Advanced Settings**

<table><thead><tr><th width="396">Раздел Dialplan and Operational</th><th></th></tr></thead><tbody><tr><td>SIP Channel Driver</td><td>both</td></tr></tbody></table>

**Settings ➝ Asterisk SIP Settings**

**Вкладка “SIP Legacy Settings \[chan\_sip]”**

**Проверить, что установлены переменные:**

<table><thead><tr><th width="399">Раздел Advanced General Settings</th><th></th></tr></thead><tbody><tr><td>Other SIP Settings</td><td><p>icesupport = yes</p><p>media_encryption = dtls</p><p>tlscipher = AES256-SHA</p><p><br></p></td></tr></tbody></table>

Создание и настройка внутреннего номера (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:**

<table><thead><tr><th width="391">Вкладка Advanced → Раздел Edit Extension</th><th></th></tr></thead><tbody><tr><td>Change SIP Driver</td><td><p>Change To CHAN_PjSIP Driver</p><p>Эта кнопка может быть недоступна, это значит, что PjSIP отключен, нужно его включить в настройках (см.выше).</p><p><br></p></td></tr></tbody></table>

**Теперь должна появиться возможность сделать следующие настройки:**

| Вкладка Advanced → Раздел Edit Extension |                             |
| ---------------------------------------- | --------------------------- |
| Enable WebRTC defaults                   | Yes                         |
| Media Encryption                         | DTLS-SRTP (not recommended) |

**Нажать кнопку Submit**

**Потом поменять SIP Driver обратно:**

<table><thead><tr><th width="398">Вкладка Advanced → Раздел Edit Extension</th><th></th></tr></thead><tbody><tr><td>Change SIP Driver</td><td>Change To CHAN_SIP Driver</td></tr></tbody></table>

**Теперь сделать оставшиеся настройки:**

| Вкладка 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:

{% embed url="<https://www.doubango.org/sipml5/call.htm>" %}
<https://www.doubango.org/sipml5/call.htm>
{% endembed %}

### Настройка

**Сначала кнопка “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         | <p>Скопировать из настроек FreePBX</p><p>Extension: 1001 ➝ вкладка General ➝ Edit Extension ➝ Secret</p><p><br></p> |
| 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](https://wiki.asterisk.org/wiki/display/AST/New+in+11)
* [Asterisk WebRTC Support - Asterisk Project - Asterisk Project Wiki](https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support)

#### PjSIP в Asterisk

* Новый драйвер chan\_pjsip в Asterisk 12: [New in 12 - Asterisk Project - Asterisk Project Wiki](https://wiki.asterisk.org/wiki/display/AST/New+in+12)
* PjSIP доступен по умолчанию в Asterisk 15: [PJSIP-pjproject - Asterisk Project - Asterisk Project Wiki](https://wiki.asterisk.org/wiki/display/AST/PJSIP-pjproject)

#### FreePBX

* [Port used on your PBX - PBX Platforms - Documentation](https://wiki.freepbx.org/display/PPS/Ports+used+on+your+PBX)

#### Примеры настройки

* [Настройка WebRTC в Asterisk 13. Vox Link.](https://voxlink.ru/kb/asterisk-configuration/nastrojka-webrtc-v-asterisk-13/)
* [WebRTC(создаем клиент и настраиваем Asterisk) за 15 минут | AsterConf-2019](https://www.youtube.com/watch?v=nw5RX0YST3Q)
* [Установка и настройка Asterisk для работы с WebRTC](https://habr.com/ru/post/236291/)
* [Configuring Asterisk for WebRTC Clients](https://wiki.asterisk.org/wiki/display/AST/Configuring+Asterisk+for+WebRTC+Clients)
* [Установка WebRTC клиента на систему Asterisk с FreePBX](http://vinogradov.iptel.od.ua/ustanovka-webrtc-klienta-na-sistemu-asterisk-s-freepbx/)
