Создать задачу для поиска по транскрибациям звонков

POST /api/v1/async_search_phrases/find_matching_transcripts

Параметры запроса:

project_id - номер проекта
date_till - начало временного промежутка поиска (timestamp - целое число)
date_from - конец временного промежутка поиска (timestamp - целое число)
metric_filters - количественные фильтры
phrase_filters - фразовые фильтры

Пример запроса:

{
 "project_id": 868017,
 "date_from":1555153200,
 "date_till":1555575755,
 "metric_filters":[
  {
    "value":"3",
    "label":"interjections_count_abs",
    "operator":"<"
  },
  {
    "value":["270", "210"],
    "label":"operator",
    "operator":"="
  }],
 "phrase_filters":[
  {
    "operator":"both_include",
    "value":[],
    "min_matches":2,
    "vocabulary_ids":[425848,179389]
  },
  {
    "operator":"operator_include",
    "value":["Отлично", "Добрый день"],
    "min_matches":1,
    "vocabulary_ids":[]
  }
]}

Задача ставится в очередь и в ответ на запрос приходит task_id:

{"task_id":"2a49a969-e4fa-4d5a-8b98-e1cc1edb71f6"}

metric_filters

metric_filters - это список объектов, каждый из которых содержит три поля: value, label и operator.

Пример metric_filters:

"metric_filters":[
  {
    "value":"3",
    "label":"interjections_count_abs",
    "operator":"<"
  },
  {
    "value":["270", "210"],
    "label":"operator",
    "operator":"="
  },
  ...
]

Получить список возможных фильтров:

GET /api/v1/project/{id проекта}/metrics/list

Результат:

{"metrics":[
    ...
    {
     "aggregate":["avg","max"],
     "description":"",
     "filter":{"choices":[],"type":"range"},
     "is_lexical":false,
     "label":"client_interjections_count_abs",
     "name":"Клиент перебил оператора",
     "parent":"Параметры речевой активности",
     "rateable":true,
     "relative":false,
     "show_plot":true,
     "show_tabl":true,
     "unit":"1"
    },
    ...
]}

Выбираем label из списка и конструируем объект metric_filters. Если filter.type == range, то в качестве значения поля operator можно выбрать только '<' или '>', а поля value - неотрицательные числа. А если filter.type == multiselect, то operator - только '=', value - подсписок списка filter.choices. В metric_filters можно использовать только не is_lexical метрики.

Также можно фильтровать по номеру клиента ("label":"client") для этого искомые номера необходимо перечислить в списке value, а operator задать как '='.