Проблема с интеграцией плагина SIPML5 на AWS с сервером Asterisks-13 с использованием WebRTC

Я столкнулся с проблемой интеграции демо плагина SIPML5 на сервер Asterisks. Версия сервера Asterisk — «Asterisk 13.14.0». Новая версия сервера звездочек поддерживает модуль SRTP. Демонстрационные файлы плагина взяты из репозитория Doubango на github. Демонстрационные файлы интеграции помещаются в корневую папку нашей учетной записи сервера AWS.

Ref: https://github.com/DoubangoTelecom/sipml5/

Содержимое различных файлов конфигурации для сервера Asterisks следующее:

http.conf

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlsprivatekey=/etc/asterisk/keys/asterisk.pem

rtp.conf

[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.l.google.com:19302

extensions.conf

[default]
exten => 100,1,Dial(SIP/1060)
exten => 101,1,Dial(SIP/1061)
exten => 102,1,Playback(1-for-am-2-for-pm)
exten => 205,1,Answer
exten => 205,2,Wait(2)
exten => 205,3,Record(asterisk-recording%d:ulaw)
exten => 205,4,Wait(2)
exten => 205,5,Playback(${RECORDED_FILE})
exten => 205,6,Wait(2)
exten => 205,7,Hangup

[from-internal]
exten => 1000,1,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()

sip.conf

[general]
udpbindaddr=0.0.0.0:5060
realm=x.x.x.x ;replace with your Asterisk server public IP address or host
transport=udp,ws,wss
externaddr=x.x.x.x ;replace with your Server's Public IP Address
websocket_enabled=true

[6001]
host=dynamic
secret=****
context=from-internal
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=no
disallow=all
allow=ulaw
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass

Значения полей, установленные для страницы expert.htm для демонстрации, следующие:

WebSocket Server URL : wss://X.X.X.X:8088/ws
SIP outbound Proxy URL: udp://X.X.X.X:5060
ICE servers: [{ url: ‘stun:stun.l.google.com:19302’}]

Значения полей, установленные для страницы call.htm для демонстрации, следующие:

Display name: Rusty WEBRTC
Private identity: 6001
Public identity: sip:[email protected]
Password; ****
Realm: X.X.X.X

Где X.X.X.X — IP-адрес моего сервера Asterisk.

При нажатии на кнопку «Войти» на странице call.htm отображается сообщение об ошибке вида

Disconnected: Failed to connect to the server

Плагин linphone уже установлен на проекте. В связи с прекращением поддержки NPAPI браузерами Chrome/Mozilla функция VoIP в проекте полностью устарела. Теперь я хочу заменить эту функцию плагином SipML5, который поддерживает протокол WebRTC. Мне нужно проверить функции регистрации, входа в систему, аудиовызова плагина SIPML5. Но все эти функции могут быть реализованы после того, как я подключился к серверу.

Интерфейс командной строки Asterisks не отображает никаких сообщений об ошибках. В истории консоли браузеров Chrome и Mozilla не отображаются сообщения об уязвимых ошибках. Так что я полностью застрял на проекте.

Демонстрационные файлы отлично работали на сервере Asterisks 11.8.1. Но на сервере не был установлен модуль SRTP, поэтому функция аудио не работала нормально. Наша команда поддержки сейчас установила библиотеку и переустановила сервер звездочек с версией 13. Брандмауэр открыт для сервера AWS, и теперь открыты порты.

Может ли кто-нибудь помочь мне решить проблему, чтобы я мог продолжить интеграцию подключаемого модуля в мой проект. Пожалуйста, дайте мне знать, если нужны какие-либо другие детали.


person Sarath Kumar    schedule 20.03.2017    source источник


Ответы (2)


Клиент SipML5 попытается подключиться к серверу через защищенный URL-адрес WebSocket (WSS). Поэтому вам нужно использовать порт 8089 (tls) в URL-адресе WSS.

Если вы используете самоподписанные сертификаты SSL в http.conf, разрешите их, открыв https://X.X.X.X:8089/ws URL во вкладке браузера.

person Ajay    schedule 22.03.2017

Возможные шаги по отладке: 1. Проверьте, действительно ли asterisk прослушивает 8089. Для этого вы можете использовать netstat. 2. Если вы загружаете свой клиент/браузер в режиме https, вам нужно доверять своему клиенту на звездочке. Это можно сделать через: http://X.X.X.X:8089/httpstatus и выбрать доверие.

person Jatin Jain    schedule 30.03.2017