Существует четыре типа REST-методов:
Метод connect определяет поведение всех остальных методов.
Метод connect должен возвращать в ответе ровно те данные, которые он получил от WCS, за исключением тех случаев, когда нужно явно переопределить какое-либо поле ответа либо нужно явно вернуть другой статус.
Остальным методам рекомендуется возвращать в ответе ровно те данные, которые они получили, за исключением тех случаев,
когда нужно явно переопределить какое-либо поле ответа либо нужно явно вернуть другой статус.
Все методы должны возвращать HTTP-статус 200 OK, за исключением тех случаев, когда требуется явно вернуть другой статус, например статус ошибки 403 Forbidden.
Эти вызовы могут быть прерваны web-сервером:
Прерывание этих вызовов не запрещено, но нецелесообразно:
Эти вызовы не могут быть прерваны web-сервером, т.к. соответствующее событие уже произошло на стороне WCS и web-серверу направляется только уведомление.
Входящие вызовы могут быть прерваны web-сервером. В случае прерывания входящего вызова WCS уведомляет об этом инициатора вызова.
Если вызов REST-метода любого типа был инициирован при помощи REST API, он не должен быть отклонен веб-сервером
Ошибкой взаимодействия считается возврат web-сервером статуса, отличного от 200 ОК или ошибка, которая препятствует обращению к web-серверу. В зависимости от поля restOnError, в конфиге restClientConfig и типа метода будут произведены следующие действия, указанные в таблице:
restOnError | | - Прямые вызовы | II - События | III - Входящие вызовы |
---|---|---|---|
FAIL |
|
|
|
LOG |
|
|
|
В случае получения SIP статусов 4xx, 5xx, 6xx, а так же в случае других ошибок, не связанных с REST, будут инициированы соответствующие события со статусом FAILED и описанием в поле 'info'. Эти события будут отправлены web-серверу, а затем клиенту в соответствии с правилами RestClientConfig.
Например, если при исходящем звонке SIP сервер вернет 403 FORBIDDEN, на web-сервер и на клиента будет отправлено CallStatusEvent status='FAILED', info='SIP 403 FORBIDDEN', sipMessageRaw='исходное SIP сообщение'.
Если ошибку нельзя соотнести ни с одним из существующих событий, то будет инициировано событие ErrorEvent с описанием ошибки в поле 'info'.
Рассмотрим по одному методу от каждого типа (остальные методы ведут себя одинаково внутри типа).