Вопрос по конфигурации

alexayy

New Member
Добрый день!
Мы используем приложение Флешфонер для звонков из web через СРМ виджет и используем Манго в качестве SIP провайдера.

Нас интересует вопрос, можно ли передавать в качестве SIP Login и SIP Password просто другие данные, которые поддерживает Манго?
Как flashphoner принимает креды пользователя и пробрасывает их дальше в Манго? https://docs.flashphoner.com/display/WCS5EN/The+list+of+methods+and+their+parameters

FlashphoneClient.setCredentials(login, password);

sipInput и passSip
_setSipCreds(sipInput, passSip)
 

Max

Administrator
Staff member
Добрый день.
WCS передает содержимое полей sipLogin и sipPassword SIP стороне в стандартном SIP REGISTER: сначала в сторону SIP PBX отправляется SIP REGISTER без реквизитов авторизации, затем SIP PBX присылает 401 c nonce для шифрования пароля, затем WCS отправляет SIP REGISTER уже с шифрованным паролем. Эта процедура описана в стандарте.
Поэтому эти поля обязательны, и другие данные вместо них передавать нельзя.
Если процедура регистрации в Mango отличается от стандартной, необходимо уточнение, какие именно дополнительные данные принимает Mango, со ссылками на соответствующие стандарты.
Страница документации, на которую вы ссылаетесь, относится к REST хукам. Поля, которые там перечислены, WCS отправляет встроенному или заданному бэкенду для того, чтобы тот разрешил или отклонил какую-либо операцию (подключение пользователя, звонок и т.д.). REST хуки могут использоваться для подстановки полей sipLogin и sipPassword, чтобы на стороне клиента их не показывать, но в любом случае эти поля обязательны.
 

Max

Administrator
Staff member
Пароли SIP не хранятся в конфиге.

Всего есть три способа работы с credentials:

1) SIP логин и пароль передаются непосредственно с веб-страницы.

2) SIP логин и пароль передаются Вашим эндпоинтом в ответ на запрос REST HTTP /connect
Т.е. при попытке пользователя установить соединение с веб-страницы, WCS сервер обратится к Вашему кастомному эндпоинту, например по адресу http://yourdomain.com/wcs/connect и эндпоинт должен вернуть 200 OK и SIP логин и пароль в ответе.

При этом, не важно какие креды были переданы с веб страницы, например "логин1" "пароль1". WCS применит те креды, которые отдал эндпоинт. Это похоже на конфиг, только динамический.

3) Не передавать креды вовсе.

Если SIP сервер позволяет аутентифицировать звонки по IP, то достаточно указать, что можно совершать звонки с IP адреса, на котором находится WCS. В этом случае исходящий звонок с веб страницы опять же пройдет с произвольными логином и паролем "логин1" "пароль1".

Таким образом, для передачи по пути (2), вам нужно

1. Реализовать ваш эндпоинт:
/connect

2. Протестировать Ваш эндпоинт с помощью Postman и убедиться, что он возвращает корректный ответ.
Для этого снимите дамп с WCS сервера tcpdump -i lo port 8081 -w log.pcap
И сделайте несколько коннектов веб телефона с вашей демо страницы.
Откройте дам в Wireshark и скопируйте оттуда тело запроса /connect
Вставьте в Postman: Raw Body.

3. После того, как тестирование будет завершено, пришлите нам этот урл эндпоинта на проверку (опционально).

4. Если все верно, вы можете прописать урл этого эндпоинта вместо EchoApp в файле /usr/loca/FlashphonerWebCallServer/conf/database.yml

Документация по REST хукам:

Как прописать урл через CLI (альтернатива database.yml)

Code:
update app -l "http://yourdomain.com/wcs/connect" MyApp
Дополнительно

Если вы используете виджет для исходящих звонков с веб страницы и входящих звонков на эту же страницу не предполагается, то при соединении через вебсокет нужно передать registerRequired: false, в этом случае WCS не будет отправлять запрос REGISTER в сторону SIP сервера, т.к. этот запрос нужен только для входящих звонков. Однако это никак не влияет на аутентификацию. Если SIP сервер требует аутентификации по логину и паролю, то на попытку исходящего звонка INVITE он ответит с 401 Authentication Required и WCS будет обязан передать пароль в зашифрованном виде по схеме DIGEST Authentication.
 
Top