Перейти к содержанию

REST-методы

Общие сведения

Для интеграции с бэкенд сервером WCS использует REST / HTTP вызовы, которые мы называем REST hooks или REST методы.

Таким образом, вы предоставляете WCS-серверу API на ваших скриптах, на которое WCS будет отправлять данные о коннектах, звонках, видеопотоках и т.д.

REST-методы могут быть использованы для следующих целей:

  • Аутентификация коннектов к серверу по токену или по паролю
  • Получение в реальном времени информации о коннектах, дисконнектах, начале и завершении потоков, звонков и т.д.
  • Переопределение данных, переданных с клиента. Например, можно переопределить и скрыть реальное имя потока или направление звонка
  • Реализация кастомного сигналинга с передачей данных через Websocket, например рассылка текстового сообщения в чате всем подключенным клиентам

REST-методы должны быть реализованы в виде простых HTTP / HTTPS скриптов, которые работают с JSON в теле HTTP-запроса и отдают JSON в теле HTTP ответов.

Request

Protocol HTTP/HTTPS
URL `http://path/method` or `https://path/method`
Method POST
Content-Type application/json
Body JSON

Response

В ответ WCS должен получить стандартный HTTP ответ с телом JSON

status 200
Reason phrase OK
Body JSON

Отключение REST методов

По умолчанию, обработка REST методов включена. Для отключения необходимо установить в файле flashphoner.properties следующий параметр

disable_rest_requests=true

Обработка задержек при ответе back-end сервера

При больших нагрузках возможны задержки ответов бэкенд сервера на запросы WCS. Контролировать максимальную длительность таких задержек можно при помощи настройки в файле flashphoner.properties

rest_request_timeout=15

По умолчанию, максимальная длительность задержки ответа бэкенд сервера установлена в 15 секунд. Если в течение этого времени ответ не был получен, в логе сервера будет зафиксировано исключение

09:05:17,012 ERROR           RestClient - API-ASYNC-pool-12-thread-2 Got exception in REST 
java.net.SocketTimeoutException: Read timed out

Ошибка будет обработана в соответствии с настройкой restClientConfig.

Рекомендуется задавать максимальную длительность задержки при ответе сервера в пределах от 1 до 60 секунд. Значение

rest_request_timeout=0

полностью отключает контроль задержки.

Обработка исключений при отправке запросов

Начиная со сборки 5.2.1475, если при попытке отправить запрос к бэкенд серверу возникает ошибка, будет предпринято указанное число повторных попыток, по умолчанию 3:

rest_client_request_retry_count=3

Обработку ошибок можно отключить при помощи настройки

rest_client_request_sent_retry_enabled=false

В этом случае, если отправить запрос не удалось, в лог сервера сразу будет выведено соответствующее исключение, например

10:32:43,072 ERROR           RestClient - API-ASYNC-pool-13-thread-15 Got exception in REST
org.apache.http.NoHttpResponseException: localhost:8081 failed to respond