Сохраняемые в потоковую БД мастер-домена события

Путь расположения

Путь в сборочном каталоге Описание

/era_env/priv/metadata/master/events/events.json

Дескриптор состава классов и типов событий (events.json)

/era_env/priv/metadata/master/events/<EVENT_CLASS>/<EVENT_TYPE>.json

Дескриптор полей событий типа

Обзор

Набор ассетов осуществляющих фильтрацию событий и состава их полей между генерацией в системе и сохранением в потоковую БД мастер-домена (CDR common).

На основе файлов метаданных:

  • автоматически формируется структура событийной потоковой БД домена, создаются схемы, таблицы, столбцы указанных типов;

  • осуществляется фильтрация генерируемых событий, сохраняемых в потоковую БД вплоть до полного отсутствия;

  • фильтруется состав полей генерируемых событий для сохранения в БД ограниченного их числа.

Перечень и описание классов событий, типов событий и их полей доступны в разделе.

Дескриптор состава классов и типов событий (events.json)

Список классов событий и содержащихся в них типов событий, подлежащих сохранению в событийную потоковую БД мастер-домена (CDR common).

Каждому из перечисленных в списке классов событий в папке events должен соответствовать отдельный каталог, внутри которого для каждого типа событий этого класса должен присутствовать файл, описывающий состав полей события, подлежащих сохранению в БД.

Формат:
[
  {
    "class": str,
    "events": array<str>
  },
  ...
]
  • class – имя класса событий.

  • events – список имен типов событий, входящих в класс.

Пример events.json

Перечисляет все классы событий мастер-домена и входящие в них типы событий

Пример:
[
  {
    "class": "callevents",
    "events": [
      "call_asr",
      "call_rec_links",
      "dlg_binding",
      "dlg_call",
      "dlg_dead",
      "dlg_init",
      "dlg_pickup",
      "dlg_start",
      "dlg_stop",
      "fork_answer",
      "fork_cancel",
      "fork_preanswer",
      "fork_redirect",
      "fork_start",
      "fork_stop",
      "hold",
      "invite",
      "media_migrate_done",
      "rec_info",
      "records_moved",
      "refer",
      "replaces_invite",
      "replaces_refer",
      "route",
      "route_feature",
      "route_fin",
      "route_redirect",
      "route_referred",
      "route_replacing",
      "route_dead",
      "unhold",
      "user_redirect"
    ],
    "partition": {
      "cdr": {
        "fields": [
          "invitedt"
        ],
        "template": "datemonth"
      }
    }
  },
  {
    "class": "confevents",
    "events": [
      "call_attach",
      "call_detach",
      "conf_dead",
      "conf_init",
      "conf_rec_links",
      "conf_start",
      "conf_stop",
      "fork_answer",
      "fork_preanswer",
      "fork_start",
      "fork_stop"
    ]
  }
]

Дескриптор полей событий типа

Каталог класса событий. Именуется названием класса. Содержит внутри файлы-дескрипторы по всем типам событий класса, их полей и типов значений в БД. Имена файлов соответствуют именам типов событий.

Формат:
{
  "class": str,
  "type": str,
  "fields": [
    {
      "name": str,
      "type": "varchar" | "bigserial" | "timestamp" | "uuid" | "integer",
      "required": true | false
    },
    ...
  ]
}
  • class – название класса событий (дубликат имени каталога).

  • type – название типа событий (дубликат имени файла).

  • fields – список сохраняемых в БД полей (суть структура таблицы):

    • name – название поля события и одновременно столбца в таблице БД.

    • type – тип значения столбца в таблице БД.

    • required – признак обязательности поля (по умолчанию false).

    • default – значение по умолчанию (для полей с required = false)

Пример

Пример файла для типа событий callevents.dlg_start, расположение /callevents/dlg_start.json.

Пример
{
  "class": "callevents",
  "type": "dlg_start",
  "fields": [
    { "name": "id", "type": "bigserial" },
    { "name": "acallid", "type": "varchar", "required":true },
    { "name": "dialogid", "type": "varchar" },
    { "name": "alocaluri", "type": "varchar" },
    { "name": "alocaltag", "type": "varchar" },
    { "name": "aremoteuri", "type": "varchar" },
    { "name": "bcallid", "type": "varchar" },
    { "name": "blocaluri", "type": "varchar" },
    { "name": "blocaltag", "type": "varchar" },
    { "name": "bremoteuri", "type": "varchar" },
    { "name": "usemedia", "type": "bool" },
    { "name": "mgc", "type": "varchar" },
    { "name": "msid", "type": "varchar" },
    { "name": "reclinks", "type": "varchar" },
    { "name": "isrec", "type": "boolean" },
    { "name": "invitets", "type": "bigint" },
    { "name": "eventts", "type": "timestamp" },
    { "name": "acallidhash", "type": "bigint" },
    { "name": "dialogidhash", "type": "bigint" },
    { "name": "cid", "type": "uuid" },
    { "name": "invitedt", "type": "timestamp"},
    { "name": "aremoteparty", "type": "varchar" },
    { "name": "aremotecontact", "type": "varchar" },
    { "name": "bremotecontact", "type": "varchar" },
    { "name": "ausername", "type": "varchar" },
    { "name": "adomain", "type": "varchar" },
    { "name": "adisplayname", "type": "varchar" },
    { "name": "anetworkaddr", "type": "varchar" },
    { "name": "acallednum", "type": "varchar" },
    { "name": "arepresentative", "type": "varchar" },
    { "name": "aouter", "type": "boolean" },
    { "name": "aprovidercode", "type": "varchar" },
    { "name": "busername", "type": "varchar" },
    { "name": "bdomain", "type": "varchar" },
    { "name": "bdisplayname", "type": "varchar" },
    { "name": "bnetworkaddr", "type": "varchar" },
    { "name": "bouter", "type": "boolean" },
    { "name": "bprovidercode", "type": "varchar" },
    { "name": "anumber", "type": "varchar" },
    { "name": "bnumber", "type": "varchar" },
    { "name": "ctxscridm", "type": "varchar" },
    { "name": "ctxscridd", "type": "varchar" },
    { "name": "relates", "type": "varchar" }
  ]
}