GetSpeechAnalyticsList

Метод GetSpeechAnalyticsList

Примените метод GetSpeechAnalyticsList для получения результатов речевой аналитики звонков за определенный период. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже:

Точка подключения:

POST: https://api.exolve.ru/statistics/call-record/v1/GetSpeechAnalyticsList

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
date_fromstringдата начала выборки звонков в формате RFC-3339 / ISO-8601
date_tostringдата окончания выборки звонков в формате RFC-3339 / ISO-8601
limituint32лимит выводимых строк
offsetuint64номер строки, с которой начинать выборку (начинается с 0)

Выходные параметры

ПараметрТипОписание
speech_analyticsArray SpeechAnalyticsрезультат речевой аналитики звонка

SpeechAnalytics

ПараметрТипОписание
urlstringURL для отправки текстовой расшифровки звонка
call_iduint64идентификатор звонка
application_uuidstringидентификатор приложения, с номера которого был совершён звонок
date_timestringдата и время готовности речевой аналитики RFC-3339 / ISO-8601
fromstringномер звонящего абонента
tostringномер принимающего абонента
start_timestringдата и время начала звонка
end_timestringдата и время окончания звонка
conversation_statisticsArray ConversationStatisticsобщая статистика проанализированного разговора
interrupts_statisticsArray InterruptsStatisticsстатистика перебиваний в разговоре
silence_statisticsArray SilenceStatisticsстатистика молчания в разговоре
speech_statisticsArray SpeechStatisticsстатистика речи в разговоре
conversation_summaryArray ConversationSummaryрезюме разговора, автоматически сгенерированное на основе его семантического анализа
classifier_statisticsArray ClassifierStatisticsстатистика применённых тегов
transcriptionArray Transcriptionтекстовая расшифровка разговора

ConversationStatistics

ПараметрТипОписание
speaker_statisticsArray SpeakerStatisticsстатистика разговора с разбивкой по абонентам

SpeakerStatistics

ПараметрТипОписание
channel_tagstringканал абонента, где 0 — звонящий, 1 — принимающий вызов
total_speech_durationstringобщая продолжительность речи абонента
total_silence_durationstringобщая продолжительность молчания абонента
speech_ratiodoubleсоотношение речи
speech_speedArray SpeechSpeedскорость речи абонента

SpeechSpeed

ПараметрТипОписание
mindoubleминимальная скорость речи
maxdoubleмаксимальная скорость речи
avgdoubleсредняя скорость речи
stddoubleстандартное отклонение

InterruptsStatistics

ПараметрТипОписание
speaker_interruptsArray SpeakerInterruptстатистика перебиваний с разбивкой по абонентам

SpeakerStatistics

ПараметрТипОписание
channel_tagstringканал абонента, где 0 — звонящий, 1 — принимающий вызов
total_interrupts_countint64общее количество перебиваний абонентом
total_interrupts_durationstringобщая продолжительность перебиваний абонентом

SilenceStatistics

ПараметрТипОписание
total_simultaneous_silence_durationgoogle.protobuf.Durationобщая продолжительность одновременного молчания абонентов
total_simultaneous_silence_ratiodoubleобщая продолжительность одновременного молчания абонентов
simultaneous_silence_duration_estimationArray SimultaneousSilenceDurationEstimationобщая продолжительность одновременного молчания абонентов

SimultaneousSilenceDurationEstimation

ПараметрТипОписание
mindoubleминимальная продолжительность молчания
maxdoubleмаксимальная продолжительность молчания
avgdoubleсредняя продолжительность молчания
stddoubleстандартное отклонение

SpeechStatistics

ПараметрТипОписание
total_simultaneous_speech_durationgoogle.protobuf.Durationобщая продолжительность одновременной речи абонентов
total_simultaneous_speech_ratiodoubleобщая продолжительность одновременной речи абонентов
simultaneous_speech_duration_estimationArray SimultaneousSpeechDurationEstimationобщая продолжительность одновременной речи абонентов

SimultaneousSpeechDurationEstimation

ПараметрТипОписание
mindoubleминимальная продолжительность речи
maxdoubleмаксимальная продолжительность речи
avgdoubleсредняя продолжительность речи
stddoubleстандартное отклонение

ConversationSummary

ПараметрТипОписание
quizArray Quizрезюме разговора

Quiz

ПараметрТипОписание
requeststringвопрос
responsestringответ, автоматически сгенерированный на основе семантического анализа

Резюме диалога состоит из ответов на эти вопросы:

  1. Оператор был вежливым?
  2. Оператор был раздражен?
  3. Оператор был вовлечен в диалог?
  4. Оператор был эмпатичным?
  5. Оператор хамил?
  6. Оператор решил проблему клиента?
  7. Оператор был уверенным?
  8. Клиент ушел раздраженным?
  9. Клиент остался доволен?
  10. Клиент хамил?

Summarization

ПараметрТипОписание
statementsArray Statementsрезюме диалога
summarystringобщее резюме диалога
operator_keywordsstringключевые слова оператора
client_keywordstringключевые слова клиента
problemsstringпроблема звонка
call_resultsstringрезультат звонка
themestringтема звонка
call_reasonstringитоги звонка

Statements

ПараметрТипОписание
namestringназвание
responsestringответ, автоматически сгенерированный на основе семантического анализа

ClassifierStatistics

ПараметрТипОписание
classification_resultsArray ClassificationResultприменённые теги в разговоре

ClassificationResult

ПараметрТипОписание
classifierstringтег
channel_tagstringканала абонента, где 0 — звонящий, 1 — принимающий вызов
total_countstringобщее количество применённых тегов

Тег — группа ключевых слов одной тематики. Сервис автоматически определяет, встречались ли те или иные ключевые фразы в разговоре, и добавляет к нему тег. Например, теги показывают, что оператор поблагодарил клиента за ожидание или что клиент обращается в службу поддержки повторно. Полный перечень тегов указан в этой статье.


Transcription

ПараметрТипОписание
phrasesArray Phraseтекстовая расшифровка разговора

Phrase

ПараметрТипОписание
channel_tagstringканала абонента, где 0 — звонящий, 1 — принимающий вызов
textstringтекстовая расшифровка разговора
start_timestringвремя начала фразы с применённым тегом
end_timestringвремя окончания фразы с применённым тегом
classifiersArray PhraseClassifierтекстовая расшифровка разговора

PhraseClassifier

ПараметрТипОписание
classifierstringприменённый тэг
highlighted_textstringфраза с применённым тэгом

Возможные ошибки

КодСтатусПример сообщенияОписание
400Bad Requestproto: syntax error (line 2:18): unexpected tokenне задано значение в одном из полей
400Bad Requestproto: (line 2:18): invalid google.protobuf.Timestamp value ""невалидное значение в одном из обязательных параметров
401Unauthorizedfailed to parse tokenневалидный API-ключ
401Unauthorizederror while trying to get token from headerотсутствует API-ключ
404Not Foundinvalid uid or application uuidневерный идентификатор звонка

Примеры

Входные параметры:

{
    "date_from": "2024-01-15T00:10:00Z",
    "date_to": "2025-01-30T23:59:59Z",
    "application_uuid": "80f14680-d069-4aa2-b7b6-e0699231ec17"
}

Выходные параметры:


{
      "url": "https://example.com",
      "call_id": "7227567342572675072",
      "application_uuid": "80f14680-d069-4aa2-b7b6-e0699231ec17",
      "date_time": "2024-08-09T06:53:38Z",
      "from": "78633035672",
      "to": "79842198158",
      "start_time": "2024-08-09T06:52:16.179Z",
      "end_time": "2024-08-09T06:52:38.931Z",
      "conversation_statistics": {
        "speaker_statistics": [
          {
            "channel_tag": "0",
            "total_speech_duration": "19s",
            "total_silence_duration": "19s",
            "speech_ratio": 0.37,
            "speech_speed": {
              "min": 2.65,
              "max": 3.19,
              "avg": 2.87,
              "std": 0.28
            }
          },
          {
            "channel_tag": "1",
            "total_speech_duration": "0.12s",
            "total_silence_duration": "0.12s",
            "speech_ratio": 0.07829268292682927,
            "speech_speed": {
              "min": 2.65,
              "max": 3.19,
              "avg": 2.87,
              "std": 0.28
            }
          },
          {
            "channel_tag": "",
            "total_speech_duration": "0.31s",
            "total_silence_duration": "0.31s",
            "speech_ratio": 0,
            "speech_speed": {
            "min": 1.79,
            "max": 3.19,
            "avg": 2.33,
            "std": 0.27
            }
          }
        ]
      },
      "interrupts_statistics": {
        "speaker_interrupts": [
          {
            "channel_tag": "0",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          },
          {
            "channel_tag": "1",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          },
          {
            "channel_tag": "",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          }
        ]
      },
    "silence_statistics": {
      "total_simultaneous_silence_duration": "0.7s",
      "total_simultaneous_silence_ratio": 0.86,
      "simultaneous_silence_duration_estimation": {
        "min": 0.4,
        "max": 1.23,
        "avg": 0.9,
        "std": 0.8
        }
      },
    "speech_statistics": {
      "total_simultaneous_speech_duration": "11s",
      "total_simultaneous_speech_ratio": 0,
      "simultaneous_speech_duration_estimation": {
        "min": 120,
        "max": 5819,
        "avg": 2369.8,
        "std": 2250.83
        }
      },
      "conversation_summary": {
        "quiz": [
          {
            "request": "1. Оператор был вежливым?",
            "response": "1. Да"
          },
          {
            "request": "2. Оператор был раздражен?",
            "response": "2. Нет"
          },
          {
            "request": "3. Оператор был вовлечен в диалог?",
            "response": "3. Нет"
          }
        ]
      },
      "classifier_statistics": {
        "classification_results": []
      },
      "transcription": {
        "phrases": [
          {
            "channel_tag": "1",
            "text": "Добрый день! Меня зовут Софья, как я могу вам помочь?",
            "start_time": "1s",
            "end_time": "5s",
            "classifiers": [
               {
                 "classifier": "Приветствие",
                  "highlighted_text": "добрый день"
                }
            ]
          },
          {
            "channel_tag": "0",
            "text": "Алло! Вы меня слышите?",
            "start_time": "7s",
            "end_time": "8s",
            "classifiers": [
               {
                 "classifier": "Проблемы со связью",
                  "highlighted_text": "алло"
                }
            ]
          },
          {
            "channel_tag": "1",
            "text": "Да, вас хорошо слышно.",
            "start_time": "10s",
            "end_time": "11s",
            "classifiers": []
          },
          {
            "channel_tag": "1",
            "text": "Чем я могу вам помочь?",
            "start_time": "13s",
            "end_time": "13s",
            "classifiers": []
          }
        ]
      }
    },
    {
      "url": "https://example.com",
      "call_id": "7227571958240649216",
      "application_uuid": "80f14680-d069-4aa2-b7b6-e0699231ec17",
      "date_time": "2024-08-09T07:11:38Z",
      "from": "78633035672",
      "to": "79842198158",
      "start_time": "2024-08-09T07:10:36.646Z",
      "end_time": "2024-08-09T07:10:50.911Z",
      "conversation_statistics": {
        "speaker_statistics": [
          {
            "channel_tag": "0",
            "total_speech_duration": "19s",
            "total_silence_duration": "19s",
            "speech_ratio": 0.37,
            "speech_speed": {
              "min": 2.65,
              "max": 3.19,
              "avg": 2.87,
              "std": 0.28
            }
          },
          {
            "channel_tag": "0",
            "total_speech_duration": "5s",
            "total_silence_duration": "5s",
            "speech_ratio": 0.11,
            "speech_speed": {
              "min": 1.67,
              "max": 4.68,
              "avg": 2.61,
              "std": 0
            }
          },
          {
            "channel_tag": "",
            "total_speech_duration": "11s",
            "total_silence_duration": "11s",
            "speech_ratio": 0,
            "speech_speed": {
              "min": 3.85,
              "max": 4.68,
              "avg": 4.22,
              "std": 0
            }
          }
        ]
      },
      "interrupts_statistics": {
        "speaker_interrupts": [
          {
            "channel_tag": "0",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          },
          {
            "channel_tag": "1",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          },
          {
            "channel_tag": "",
            "total_interrupts_count": "0",
            "total_interrupts_duration": "0s"
          }
        ]
      },
      "silence_statistics": {
        "total_simultaneous_silence_duration": "5s",
        "total_simultaneous_silence_ratio": 0.81,
        "simultaneous_silence_duration_estimation": {
          "min": 1180,
          "max": 2560,
          "avg": 1680,
          "std": 764.4
        }
      },
      "speech_statistics": {
        "total_simultaneous_speech_duration": "0s",
        "total_simultaneous_speech_ratio": 0,
        "simultaneous_speech_duration_estimation": {
          "min": 0,
          "max": 0,
          "avg": 0,
          "std": 0
        }
      },
      "conversation_summary": {
        "quiz": [
          {
            "request": "1. Оператор был вежливым?",
            "response": "1. Да"
          },
          {
            "request": "2. Оператор был раздражен?",
            "response": "2. Нет"
          },
          {
            "request": "3. Оператор был вовлечен в диалог?",
            "response": "3. Нет"
          },
          {
            "request": "4. Оператор был эмпатичным?",
            "response": "4. Нет"
          }
        ]
      },
      "summarization": {
        "statements": [
          {
            "name": "summary",
            "response": "Клиент и оператор не слышали друг друга из-за плохой связи"
          },
          {
            "name": "operator_keywords",
            "response": "договорились"
          },
          {
            "name": "client_keywords",
            "response": "алло", "не слышу"
          },
          {
            "name": "problems",
            "response": "плохая слышимость"
          },
          {
            "name": "call_results",
            "response": "договорились"
          },
          {
            "name": "call_reason",
            "response": "договорились"
          },
          {
            "name": "theme ",
          "response": "заказ"
          }
        ]
      },     
      "classifier_statistics": {
        "classification_results": []
      },
      "transcription": {
        "phrases": [
          {
            "channel_tag": "1",
            "text": "Добрый день! Меня зовут Софья, как я могу вам помочь?",
            "start_time": "0.000000001s",
            "end_time": "0.000000001s",
            "classifiers": []
          },
          {
            "channel_tag": "0",
            "text": "Здравствуйте! Меня хорошо слышно?",
            "start_time": "0.000000004s",
            "end_time": "0.000000004s",
            "classifiers": []
          }
        ]
      }
    }
  ]
}