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>") выполняется действие аналогичные действия выполняемым на сервере действует следующая логика:

  • выполняются действия в секции <actions>;
  • выполняется установка тега из <result>;
  • выполняется запрос к HTTP серверу, где в параметрах вызова указываются уже измененные параметры;
  • параметры вызова изменяются согласно указанным параметрам с сервера.
  • Нет меток