Приложение Click-to-Call

VBabak

New Member
Добрый день.
Необходимо настроить звонок клиентов с сайта - приложение Click-to-Call.
Сервер Web Call Server 5установлен и настроен, приложения PHONE и PHONE UI работают, сигнализация и голос ходит.
а click-to-call не работает. Не вижу попыток на телефонном сервере Астериск от сервера Сервер Web Call Server.
В логах вижу:
15:23:01,850 WARN RestTemplate - RMI TCP Connection(6)-127.0.0.1 POST request for "http://localhost:9091/ClickToCallApp/connect" resulted in 500 (Internal Server Error); invoking error handler
15:23:01,869 INFO agerRemoteRmiService - RMI TCP Connection(6)-127.0.0.1 SEND REST OBJECT ==>
URL:http://localhost:9091/ClickToCallApp/ConnectionStatusEvent
OBJECT:
{
"nodeId" : "i6SBpCXKg3SAQTK7s7EGTxUCYY3aXmQw@10.3.11.203",
"appKey" : "clickToCallApp",
"sessionId" : "/10.9.142.22:26769/10.3.11.203:8443",
"status" : "FAILED",
"info" : "Internal Server Error"
}
15:23:01,888 INFO agerRemoteRmiService - RMI TCP Connection(6)-127.0.0.1 RECEIVED REST OBJECT <==
URL:http://localhost:9091/ClickToCallApp/ConnectionStatusEvent
OBJECT:
{
"nodeId" : "i6SBpCXKg3SAQTK7s7EGTxUCYY3aXmQw@10.3.11.203",
"appKey" : "clickToCallApp",
"sessionId" : "/10.9.142.22:26769/10.3.11.203:8443",
"status" : "FAILED",
"info" : "Internal Server Error"
}
 

Max

Administrator
Staff member
Добрый день
Проверьте есть ли у вас REST-приложение Click to Call App
1. Нужно зайти в CLI
Code:
ssh -p 2000 admin@localhost
Пароль: тот что установлен в админке.
После успешного входа даст командную строку
Code:
>
2. Выведите список приложений:
Code:
>show apps
Есть ли среди них ClickToCallApp ?
 

VBabak

New Member
[root@TestVoiceServer logs]# ssh -p 2000 admin@localhost
The authenticity of host '[localhost]:2000 ([127.0.0.1]:2000)' can't be established.
RSA key fingerprint is ce:a7:c1:cf:17:3f:96:49:6a:53:1a:05:0b:ba:90:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2000' (RSA) to the list of known hosts.
Password authentication
Password:
Password authentication
Password:
> show apps
owner name appKey id URL
----------------------------------------------------------------------------------
admin qaApp qaApp 3 http://localhost:9091/QAApp
admin chatRoomApp roomApp 9 http://localhost:9091/RoomApp
admin flashChatApp flashChatApp 6 http://localhost:9091/ChatApp
admin conferenceApp conferenceApp 10 http://localhost:9091/ConferenceApp
admin chatRoomApp flashRoomApp 5 http://localhost:9091/RoomApp
admin wcs3App wcs3App 2 http://localhost:9091/EchoApp
admin websocketChatApp websocketChatApp 7 http://localhost:9091/ChatApp
admin callApp callApp 11 http://localhost:9091/CallApp
admin defaultApp defaultApp 1 http://localhost:9091/EchoApp
admin flashStreamingApp flashStreamingApp 4 http://localhost:9091/EchoApp
admin clickToCallApp clickToCallApp 12 http://localhost:9091/ClickToCallApp
admin chatRoomApp chatRoomApp 8 http://localhost:9091/ChatRoomApp

>
 

Max

Administrator
Staff member
Повторите пожалуйста тест и пришлите конфиги и логи за последний час на почту logs@flashphoner.com
/usr/local/FlashphonerWebCallServer/conf
/usr/local/FlashphonerWebCallServer/server_logs/flashphoner.log
/usr/local/FlashphonerWebCallServer/flashphoner_manager.log
Мы проверим конфигурацию.
 

Max

Administrator
Staff member
Попробуйте в конфиге
Code:
/usr/local/FlashphonerWebCallServer-5.0.2103/conf/apps/click-to-call/accounts.xml
выставить регистрацию для аккаунта:
Code:
<register_required>true</register_required>
и оставить только один аккаунт (ворой его дублирует и сделан для примера).
Пример:
Code:
 <account login="10000" password="12345"/>
Мы проверили. Без SIP регистрации Click To Call пример, похоже действительно не работает и это баг. Будем разбираться.
А с регистрацией должно работать. В наших тестах голос есть.
 

VBabak

New Member
Выставил регистрацию, убрал второй аккаунт, все заработало. Спасибо.
Теперь, как мне сделать, чтобы при нажатии кнопки на сайте CONNECT пользователи автоматически дозванивались на требуемый номер, без его ввода. Номер будет один. И как разместить кнопку на сайте, без ввода логина и пароля. Есть корпоративный сайт, нужно сделать ссылку на FlashphonerWebCallServer Click-To-Call, без авторизации и с автодозвоном на определенный номер.
 
Last edited:

Max

Administrator
Staff member
Чтобы это сделать, вам нужен пример phone.html и скрипт phone.js
Вам нужно перенести функционал из этих двух скриптов к себе на страницу.
В документации описывается как эти скрипты работают.
Т.е. все эти поля не обязательно вводить, их можно прописать в скрипте и пользователь их видеть не будет.
Для демонстрации сделана страница click-to-call.html (во вложении).
В ней вам нужно
1. Проставить путь к вашему flashphoner.js
Code:
<script type="text/javascript" src="../../../../flashphoner.js"></script>
2. Проставить ваши SIP данные и данные WCS-сервера:
Code:
//SIP credentialsvar sipOptions = {
login: "10001",
authenticationName: "10001",
password: "12345",
domain: "192.168.1.3",
outboundProxy: "192.168.1.3",
port: "5060",
registerRequired: false};

var connectionOptions = {
urlServer: "wss://wcs5-eu.flashphoner.com:8443",
sipOptions: sipOptions};
3. Проставить ваш номер, на который будет смотреть кнопка.
Пример со звонком на 10005:
<button id="callButton" type="button" onclick="connectAndCall('10005')">Call</button>

4. В результате получится такая страница:

clicktocall.jpg


Т.е. тот же самый код вы можете встроить на страницу на своем сайте.
При этом важно чтобы ваш сайт открывался по https://
 

Attachments

VBabak

New Member
В триальной версии есть ограничение по IP адресам? Могу звонить только с одного адреса. Коллеги, которые являются заказчиками, не могут проверить работу приложения.
 

Max

Administrator
Staff member
Нет, таких ограничений нет.
Если ваш сервер WCS находится в WAN и имеет публичный статический IP-адрес, то проблем быть не должно. Вы и ваши заказчики должны работать с ним одинаково успешно.

Если же ваш сервер находится в LAN (вашей локальной сети) или за NAT, по отношению к заказчикам, то требуется дополнительная конфигурация в файле flashphoner.properties:
Например
Code:
ip=9.9.9.9
ip_local=192.168.1.3
rtc_ice_add_local_component=true
В этом примере 9.9.9.9 - это внешний IP адрес WCS.
192.168.1.3 - внутренний IP адрес WCS, который будет слушать порты.

В такой конфигурации должно работать у всех.
При этом внешний IP адрес должен корректно передавать пакеты на WCS.
Например, все пакеты отправленные на внешний адрес и порт 9.9.9.9:XXXXX должны корректно перенаправляться на внутренний адрес и тот же порт 192.168.1.3:XXXXX.
В качестве примера можно привести Amazon EC2 - там NAT устроен именно так.
Если нет возможности сделать для всех портов, можно настроить правила только для тех, что использует WCS:
Code:
UDP [30000-32000], 1935
TCP 8443, 8888, 1935
Еще может быть что ваши заказчики находятся за корпоративными firewall и могут использовать только порт 443 https.
В этом случае нужно настраивать все на этот порт.
 

VBabak

New Member
оказывается, зависит еще и от браузера, не все работают корректно с WebRTC, сейчас проверил, нормально открывается с любого адреса Google Chrome, Мозилла зависит от версии. IE вообще не работает. Пока проверяем только в пределах своей LAN, про клиентов еще рано говорить, наружу также не выставляем.
 

Max

Administrator
Staff member
IE не работает, т.к. на странице не подключен Flash Player.
Чтобы подключить Flash Player, нужно добавить код как в этом примере
Code:
Flashphoner.init({flashMediaProviderSwfLocation: '../../../../media-provider.swf'});
При этом блок localMedia (или localDisplay) должен иметь размер 215 x 138 px. Flash-объект будет вставлен в этот блок для доступа к микрофону.
Code:
<div id="localMedia" style="width:215px; height:138px"></div>
Если не работает с Firefox, присылайте скриншоты, логи консоли браузера - проверим в чем может быть проблема.
 

Max

Administrator
Staff member
в Chrome? по https открываете?
Скоприруйте вывод консоли из Chrome / Developer tools Console.
 

Max

Administrator
Staff member
У вас не правильно подключен скрипт flashphoner.js
Code:
<script type="text/javascript" src="/usr/local/FlashphonerWebCallServer-5.0.2091/client2/flashphoner.js"></script>
Вы пытаетесь подгрузить его из файловой системы, а скрипты в веб-страницу подгружаются по http:// по абсолютному или относительному пути.
Например, на нашем демо-сервере скрипт доступен по адресу: https://wcs5-eu.flashphoner.com/client2/flashphoner.js
И можно было бы использовать
Code:
<script type="text/javascript" src="https://wcs5-eu.flashphoner.com/client2/flashphoner.js"></script>
Но проще всего скопировать этот скрипт и положить на web-сервер рядом с html-страницей.
 

VBabak

New Member
Заработало в Google Chrome, один раз, сейчас пишет
5:49:08 INFO webrtc - Initialized
flashphoner.js:27818 15:49:08 INFO core - Initialized
flashphoner.js:25573 WebSocket connection to 'wss://10.3.11.203:8443/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE
createSession @ flashphoner.js:25573
connectAndCall @ (index):45
onclick @ (index):112
Зато работает в Мозилле. Вообще как-то по разному это работает в разных браузерах, в некоторых вообще не работает. Есть какие-нибудь требования к браузерам?
 

Max

Administrator
Staff member
flashphoner.js:25573 WebSocket connection to 'wss://10.3.11.203:8443/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE
В Chrome все должно работать строго по https.
Т.е.
1. Сама страница должна открываться по https и домену
Code:
https://domain.com/click-to-call.html
2. Подключение по wss и домену
Code:
wss://domain.com:8443
domain.com - это ваше доменное имя, для которого на веб-сервере и на WCS должен быть настроен SSL сертификат, выданный центром сертификации, например бесплатный letsencrypt.org
Для тестирования в Chrome без официального сертификата, можно воспользоваться возможностями браузера Chrome как описано здесь.
 

Max

Administrator
Staff member
Должно работать в следующих браузерах:
  • Desktop Chrome, Firefox, Opera
  • Android Chrome, Firefox
  • Desktop (Flash Player), IE, Edge, Safari
 
Top