WebRTC (Web Real Time Communication (веб-коммуникация в режиме реального времени)) — это открытый стандарт для внедрения возможностей передачи потоковых данных в реальном времени непосредственно в веб-браузере или через другие поддерживающие его приложения по технологии точка-точка. WebRTC поддерживается в Google Chrome, Mozilla Firefox и Opera.
Для осуществления вызовов из браузера используется специальное приложение (SIP-клиент для браузера) – SIPML5. Приложение написано на Javascript и позволяет использовать браузер в качестве VoIP телефона.
Мы будем использовать:
- Centos 6.6
- Asterisk 13
- sipML5
Первым делом обновим нашу систему:
Установим необходимые пакеты:
Если хотите быстро установить все зависимости для Asterisk, то можно перейти в /usr/src/asterisk-13.3.2/contrib/scripts/ и выполнить команды:
Если хотите все сделать вручную, то переходим в папку /usr/src/ и скачиваем Asterisk, libsrtp,jansson, pjproject.
Устанавливаем libsrtp:
Устанавливаем библиотеку pjproject. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib».
Устанавливаем Jansson. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib».
Устанавливаем Asterisk. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib»
Теперь нам нужно сгенерировать сертификаты:
В процессе генерации скрипт попросит вас установить пароль на сертификат.
Установка закончена, теперь нам нужно отредактировать конфигурационные (sip.conf, http.conf, rtp.conf, extensions.conf) файлы Asterisk.
Первым делом переходим в /etc/asterisk/sip.conf, и в секции [general] расскоментируем и добавим следующие параметры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
[general] udpbindaddr=0.0.0.0:5060 realm=<ip-адрес или доменное имя сервера где установлен Asterisk > например voip.voipnotes.ru transport=udp,ws ; добавим пару номеров для Web-клиентов [800] host=dynamic secret=YouPassword context=from-internal type=friend encryption=yes avpf=yes icesupport=yes directmedia=no disallow=all allow=ulaw allow=alaw dtlsenable=yes dtlsverify=fingerprint dtlscertfile=/etc/asterisk/keys/asterisk.pem dtlscafile=/etc/asterisk/keys/ca.crt dtlssetup=actpass [801] host=dynamic secret=YouPassword context=from-internal type=friend encryption=yes avpf=yes icesupport=yes directmedia=no disallow=all allow=ulaw allow=alaw dtlsenable=yes dtlsverify=fingerprint dtlscertfile=/etc/asterisk/keys/asterisk.pem dtlscafile=/etc/asterisk/keys/ca.crt dtlssetup=actpass |
Переходим в /etc/asterisk/http.conf и в секции [general] расскоментируем и добавим следующие параметры:
Переходим в /etc/asterisk/rtp.conf и в секции [general] расскоментируем и добавим следующие параметры:
Переходим в /etc/asterisk/extensions.conf и настраиваем Dialplan:
Основную часть работы мы сделали, осталось только установить и настроить sipml5.
Установим sipml5 к себе на сервер:
Теперь sipml5 установлен на вашем сервере. В браузере переходим по ссылке http://IP-адрес вашего сервера/sipml5/call.htm (в нашем случае http://voip.voipnotes.ru/sipml5/call.htm)
Настраиваем приложение:
Display Name: Отображаемое имя
Private Identity*: Внутренний номер
Public Identity*: sip: внутренний номер @ ip-адрес или доменное имя сервера, где установлен Asterisk
Password: Пароль
Realm*: ip-адрес или доменное имя сервера, где установлен Asterisk
Нажимаем Expert mode и выполняем следующие настройки:
в Expert mode
WebSocket Server URL[2]: ws://webrtc.pbxware.ru:8088/ws
ICE Servers[4]: [{ url: ‘stun:stun.l.google.com:19302′}]
Сохраняемся, логинимся, настраиваем второй номер, и теперь можем совершать вызовы между двумя web-клиентами.
Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.
Похожие статьи:
Установка FreePBX 12 на базе Asterisk 13
FreeSWITCH: подключение к VoIP оператору и настройка диалплана
4 ответов
Антоп
Для http это просто и понятно. А как тоже самое для https?
asterboy
Пасиб, ценно. Только екстен 8XX неправильный в паттерне, должен начинаться с подчеркивания (возможно ваш хтм валидатор выкосил?)
Александр
Ошибки:
Устанавливаем libsrtp
tar zxvf srtp-1.4.2.tgz
cd srtp
autoconf
./configure
make
make install
cp /usr/local/lib/libsrtp.a /lib
Правильно делать так
./configure –prefix=/usr –libdir=/usr/lib64
и не нужно делать cp/
И вообще, ./configure делается всегда с указанием префикса /usr и либдир /usr/lib64 для конкретной статьи.
contrib/scripts/get_mp3_source.sh
Этот скрипт по умолчанию копирует исходники mpg123 не в нужную папку, так что при сборке будет ошибка.
Исходники нужно скопировать в папку addons с исходниками астериска.
В rtp.conf не нужно указывать stunaddr вообще. Без него всё работает.
В extensions.conf
[from-internal]
exten => 8XX,1,Answer()
same => n,DIAL(SIP/${EXTEN})
same => n,Hangup()
Не нужно делать Answer!!!
Voipnotes
Мы согласный с вами, и все указанное в статье можно сделать по другому. Статья писалась исходя из официальных манов и своего опыта.
Конечно можно не указывать stunaddr, но если указать его тоже не будет ошибкой.