Настройка WebRTC на практике с использованием jsSip
WebRTC — это технология, которая позволяет Web приложениям захватывать аудио и видеопотоки а также обмениваться данными без необходисмости использовать программы-посредники. Подробное описание этой технологии в теории можно посмотреть в статье «Технология WebRTC для разработки VoIP Web приложений» После однакомления с теорией можно реализовать настройку на практике. Первым делом необходимо установить ssl сертификат в Freepbx, т. к. […]
WebRTC — это технология, которая позволяет Web приложениям захватывать аудио и видеопотоки а также обмениваться данными без необходисмости использовать программы-посредники. Подробное описание этой технологии в теории можно посмотреть в статье «Технология WebRTC для разработки VoIP Web приложений»
После однакомления с теорией можно реализовать настройку на практике.
Первым делом необходимо установить ssl сертификат в Freepbx, т. к. технология WebRTC работает с шифрованием. Сами сертификаты можно получить несколькими путями:
1. Купить в специальных организациях, выдающих сертификаты
2. Бесплатно самостоятельно получить сертификат на letsencrypt
3. Сгенерировать самоподписной сертификат.
После получения сертификатов их необходимо установить во FreePBX.
Перейдите в раздел «Admin → Certificate Management» Далее выберете пункт «New Certificate», в выпадающем списке выберите «Upload Certificate».
В поле «Name» вставь произвольное имя сертификата.
В поле «Description» указываем описание.
В поле «Private Key» вставляем приватный ключ из файла сертификата полученного ранее
В поле «Certificate» вставляем сам сертификат из файла с сертификатом.
После чего нажимаем «Generate Certificate».
Далее необходимо перейти в раздел «Settings → Advanced Settings» и включить параметр «Enable TLS for the mini-HTTP Server»
Следующим шагом необходимо произвеси необходимые настройки на экстеншене.
1. transport — wss Primary (протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени).
2. Enable AVPF — YES (необходимый параметр для работы веб-телефона, включающий AVPF-транспорт для медиа-потока)
3. Force AVP — audio video profile (необходим для хождения голоса)
4. Enable ICE Support -YES (ICE это стандартизированный механизм для управления медиа потоками в режиме реального времени, между программными агентами, запущенными за NAT. Он требует явного указания сервера STUN, об этом чуть позже)
5. Enable Encryption — YES (SRTP only) — WebRTC требует включения шифрования голоса.
6. Enable DTLS — YES
7. Use Certificate — YES (выбрать загруженный ранее сертификат)
8. DTLS Verify — Fingerprint (цифровой идентификатор устройства)
9. DTLS Setup — Act/Pass (Разрешить соединения)
Далее нам необходимо указать stun сервер в FreePBX. Этот параметр указывается в разделе «Settings → Asterisk SIP Settings» (Рисунок 5)
Теперь остановимся на том, что такое STUN сервер и для чего он нужен, а также настроим его на Centos 7.
STUN — это сетевой протокол, который позволяет клиенту, находящемуся за сервером трансляции адресов (или за несколькими такими серверами), определить свой внешний IP-адрес. STUN сервер обязательно нужен при использовании WebRTC. Без его использования голос не будет ходить т. к. в SDP заголовке будет содержаться локальный ip адрес.
Есть очень много публичных STUN серверов. Один из них stun:stun.l.google.com:19302. Его можно использовать.
Мы же будем устанавливать и настраивать свой STUN сервер на операционной системе Centos 7.
В репозиториях существует пакет, который называется Coturn. Он в себе содержит как turn, так и Stun сервер. Также нам понадобится утилита coturn-utils.x86_64 который в себе содержит программу stun client для тестирования корректности настройки нашего STUN сервера, ее мы поставим на сервер Asterisk для теста.
Для установки выполним команды:
# yum install coturn.x86_64
После установки откроем конфигурационный файл /etc/coturn/turnserver.conf
# nano vim /etc/coturn/turnserver.conf
В конфигурационном файле необходимо указать следующие параметры:
listening-port=3478 — порт, который слушает Stun сервер
external-ip=ip — тут обязательно необходимо указать внешний ip сервера
stun-only — запускать только STUN сервер без TURN сервера
Этих параметров достаточно, для запуска STUN сервера.
Далее выполним запуск программы и добавление ее в автозагрузку:
# systemctl start coturn
# systemctl enable coturn
С сервера Asterisk выполним команду:
# turnutils_stunclient 80.80.80.80 — тут ip адрес севрера STUN, который мы перед этим настроили.
Ответ на запрос должен быть следующим:
0: IPv4. UDP reflexive addr: 80.80.80.91:52853 — где ip указан устройства, с которого был выполнен запрос, а также порт.
Все необходимые настройки произведены, теперь необходимо клиентом подключиться к астериску. В качестве клиента мы будем использовать бибилиотеку JsSIP. Скачать ее можно по адресу https://github.com/viloboda/WebRTCCall . Эта программа написана с использованием библиотеки JsSIP. Для подключения к нашему серверу необходимо отредактировать файл «Call.js»
В троках 24 и 27 необходимо указать домен Астериска.
В строке 98 необходимо указать адрес STUN сервера
После правок сохраняем файл и открываем в браузере файл «index.html» (Рисунок 10)
При открытии странички мы видим поле логина и пароля, после их правильного ввода и нажатии кнопки «Login» система авторизуется и отображается поле ввода номера телефона. Можно уже звонить. (Рисунок 11)
Остались вопросы?
Я - Першин Артём, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.