ECSS-10 существует возможность изменения параметров проходящего вызова при помощи команд от HTTP-сервера, посылаемых в ответ на http-запросы. Команды передаются в текстовом виде json с использованием Key-Value атрибутов. В общем виде формат атрибутов выглядит следующим образом:
При попадании вызова в action "Внешняя маршрутизация по http", на указанный сервер отправляется POST запрос с текущими параметрами вызова в теле сообщения:
{
"cgpn:"102",
"caller_id":"102",
"cgpn_display_name":"Sidorov",
"cdpn":"789",
"domain":"test.domain",
"iface_a":"054a20799850a72b",
"tag":"default,
"context":"local",
"api_key":"sdtgywq398yhetg9831qy"
} |
В случаи успешной маршрутизации в ответ с сервера ожидается 200 код. Если серверу необходимо изменить какой либо из параметров, в тело ответа помещается json с свойствами и значениями параметров вызова, которые необходимо изменить:
{
"cgpn": "string", (опционально)
"caller_id": "string", (опционально)
"cgpn_display_name": "string", (опционально)
"cdpn": "string", (опционально)
"cdpn_display_name": "string", (опционально)
"tag": "string", (опционально)
"cgpn_numtype": "internationNumber" | "nationalNumber" | "subscriberNumber" | "unknown", (опционально)
"cdpn_numtype": "internationNumber" | "nationalNumber" | "subscriberNumber" | "unknown", (опционально)
"cgpn_plantype": "isdnTelephony" | "reserved1" | "reserved2" | "spare", (опционально)
"cdpn_plantype": "isdnTelephony" | "reserved1" | "reserved2" | "spare", (опционально)
"presentation": "presentationAllowed" | "presentationRestricted" | "addressNotAvailable" | "spare" (опционально)
} |
Для того чтобы вызвать внешнюю маршрутизации на ECSS-10, в контексте маршрутизации необходимо задекларировать http сервер:
/domain/DEV_DOM/routing/http/declare routeHttp http://10.40.12.140:9990/route/actions_external_routing --api-key sdtgywq398yhetg9831qy", |
Далее добавить в контекст маршрутизации правило вида:
<rule name="to_HTTP_routing">
<conditions>
...
</conditions>
<actions>
<external_routing id="routeHttp" service="http_route_service" timeout="5000"/>
</actions>
<result>
<continue context="ctx_after_http"/>
</result>
</rule> |
В этом правиле говорится, что в случае совпадения условий, выполнить внешнюю HTTP маршрутизацию на серверах с идентификаторами routeHttp. Команды для настройки HTTP серверов можно посмотреть тут. При этом на внешнюю маршрутизацию потратить не более 5000ms. По результатам выполнения HTTP запроса, продолжится ECSS маршрутизация в контексте ctx_after_http. Но с измененными cgpn, cdpn, tag (если эти поля были изменены в результате HTTP запроса).
Если сервер вернет код не равный 200 или не ответит, маршрутизация продолжится так, будто HTTP сервер не поменял параметров вызова.
Если в секции Результат ("<result>") выполняется действие выставление тега, то фактически этот тег будет выставлен в секции Действия ("<actions>") и в запросе к HTTP серверу будет указан уже новый тег. |
Если в секции Действия ("<actions>") выполняется действие аналогичные действия выполняемым на сервере действует следующая логика:
|