GetSpeechAnalytic
Метод GetSpeechAnalytic
Примените метод GetSpeechAnalytic для получения результата речевой аналитики звонка. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.
Точка подключения:
POST: https://api.exolve.ru/statistics/call-record/v1/GetSpeechAnalytic
Авторизация
Передайте следующие Заголовки HTTP для успешной авторизации.
| Имя | Тип | Описание |
|---|---|---|
| Authorization | string | API-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения |
Входные параметры
Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.
| Параметр | Тип | Описание |
|---|---|---|
| call_id | uint64 | идентификатор звонка |
Выходные параметры
| Параметр | Тип | Описание |
|---|---|---|
| speech_analytics | Array SpeechAnalytics | результат речевой аналитики звонка |
SpeechAnalytics
| Параметр | Тип | Описание |
|---|---|---|
| url | string | URL-адрес для отправки результата речевой аналитики |
| call_id | uint64 | идентификатор звонка |
| application_uuid | string | идентификатор приложения, с/на номера которого был совершён звонок |
| date_time | string | дата и время готовности речевой аналитики |
| from | string | номер звонящего абонента |
| to | string | номер принимающего вызов абонента |
| start_time | string | дата и время начала звонка |
| end_time | string | дата и время окончания звонка |
| conversation_statistics | Array ConversationStatistics | общая статистика проанализированного разговора |
| interrupts_statistics | Array InterruptsStatistics | статистика перебиваний в разговоре |
| silence_statistics | Array SilenceStatistics | статистика молчания в разговоре |
| speech_statistics | Array SpeechStatistics | статистика речи в разговоре |
| conversation_summary | Array ConversationSummary | резюме разговора, автоматически сгенерированное на основе его семантического анализа |
| classifier_statistics | Array ClassifierStatistics | статистика применённых тегов |
| transcription | Array Transcription | текстовая расшифровка разговора |
ConversationStatistics
| Параметр | Тип | Описание |
|---|---|---|
| speaker_statistics | Array SpeakerStatistics | статистика разговора с разбивкой по абонентам |
SpeakerStatistics
| Параметр | Тип | Описание |
|---|---|---|
| channel_tag | string | канал абонента, где 0 — звонящий, 1 — принимающий вызов |
| total_speech_duration | string | общая продолжительность речи абонента |
| total_silence_duration | string | общая продолжительность молчания абонента |
| speech_ratio | double | соотношение речи |
| speech_speed | Array SpeechSpeed | скорость речи абонента |
SpeechSpeed
| Параметр | Тип | Описание |
|---|---|---|
| min | double | минимальная скорость речи |
| max | double | максимальная скорость речи |
| avg | double | средняя скорость речи |
| std | double | стандартное отклонение |
InterruptsStatistics
| Параметр | Тип | Описание |
|---|---|---|
| speaker_interrupts | Array SpeakerInterrupt | статистика перебиваний с разбивкой по абонентам |
SpeakerStatistics
| Параметр | Тип | Описание |
|---|---|---|
| channel_tag | string | канал абонента, где 0 — звонящий, 1 — принимающий вызов |
| total_interrupts_count | int64 | общее количество перебиваний абонентом |
| total_interrupts_duration | string | общая продолжительность перебиваний абонентом |
SilenceStatistics
| Параметр | Тип | Описание |
|---|---|---|
| total_simultaneous_silence_duration | google.protobuf.Duration | общая продолжительность одновременного молчания абонентов |
| total_simultaneous_silence_ratio | double | общая продолжительность одновременного молчания абонентов |
| simultaneous_silence_duration_estimation | Array SimultaneousSilenceDurationEstimation | общая продолжительность одновременного молчания абонентов |
SimultaneousSilenceDurationEstimation
| Параметр | Тип | Описание |
|---|---|---|
| min | double | минимальная продолжительность молчания |
| max | double | максимальная продолжительность молчания |
| avg | double | средняя продолжительность молчания |
| std | double | стандартное отклонение |
SpeechStatistics
| Параметр | Тип | Описание |
|---|---|---|
| total_simultaneous_speech_duration | google.protobuf.Duration | общая продолжительность одновременной речи абонентов |
| total_simultaneous_speech_ratio | double | общая продолжительность одновременной речи абонентов |
| simultaneous_speech_duration_estimation | Array SimultaneousSpeechDurationEstimation | общая продолжительность одновременной речи абонентов |
SimultaneousSpeechDurationEstimation
| Параметр | Тип | Описание |
|---|---|---|
| min | double | минимальная продолжительность речи |
| max | double | максимальная продолжительность речи |
| avg | double | средняя продолжительность речи |
| std | double | стандартное отклонение |
ConversationSummary
| Параметр | Тип | Описание |
|---|---|---|
| quiz | Array Quiz | резюме разговора |
Quiz
| Параметр | Тип | Описание |
|---|---|---|
| request | string | вопрос |
| response | string | ответ, автоматически сгенерированный на основе семантического анализа |
Резюме диалога состоит из ответов на эти вопросы:
- Оператор был вежливым?
- Оператор был раздражен?
- Оператор был вовлечен в диалог?
- Оператор был эмпатичным?
- Оператор хамил?
- Оператор решил проблему клиента?
- Оператор был уверенным?
- Клиент ушел раздраженным?
- Клиент остался доволен?
- Клиент хамил?
Summarization
| Параметр | Тип | Описание |
|---|---|---|
| statements | Array Statements | резюме диалога |
| summary | string | общее резюме диалога |
| operator_keywords | string | ключевые слова оператора |
| client_keyword | string | ключевые слова клиента |
| problems | string | проблема звонка |
| call_results | string | результат звонка |
| theme | string | тема звонка |
| call_reason | string | итоги звонка |
Statements
| Параметр | Тип | Описание |
|---|---|---|
| name | string | название |
| response | string | ответ, автоматически сгенерированный на основе семантического анализа |
ClassifierStatistics
| Параметр | Тип | Описание |
|---|---|---|
| classification_results | Array ClassificationResult | применённые теги в разговоре |
ClassificationResult
| Параметр | Тип | Описание |
|---|---|---|
| classifier | string | тег |
| channel_tag | string | канала абонента, где 0 — звонящий, 1 — принимающий вызов |
| total_count | string | общее количество применённых тегов |
Тег — группа ключевых слов одной тематики. Сервис автоматически определяет, встречались ли те или иные ключевые фразы в разговоре, и добавляет к нему тег. Например, теги показывают, что оператор поблагодарил клиента за ожидание или что клиент обращается в службу поддержки повторно. Полный перечень тегов указан в этой статье.
Transcription
| Параметр | Тип | Описание |
|---|---|---|
| phrases | Array Phrase | текстовая расшифровка разговора |
Phrase
| Параметр | Тип | Описание |
|---|---|---|
| channel_tag | string | канала абонента, где 0 — звонящий, 1 — принимающий вызов |
| text | string | текстовая расшифровка разговора |
| start_time | string | время начала фразы с применённым тегом |
| end_time | string | время окончания фразы с применённым тегом |
| classifiers | Array PhraseClassifier | текстовая расшифровка разговора |
PhraseClassifier
| Параметр | Тип | Описание |
|---|---|---|
| classifier | string | применённый тэг |
| highlighted_text | string | фраза с применённым тэгом |
Возможные ошибки
| Код | Статус | Пример сообщения | Описание |
|---|---|---|---|
| 400 | Bad Request | proto: syntax error (line 2:18): unexpected token | не задано значение в одном из полей |
| 400 | Bad Request | proto: (line 2:18): invalid google.protobuf.Timestamp value "" | невалидное значение в одном из обязательных параметров |
| 401 | Unauthorized | failed to parse token | невалидный API-ключ |
| 401 | Unauthorized | error while trying to get token from header | отсутствует API-ключ |
| 404 | Not Found | invalid uid or application uuid | неверный идентификатор звонка |
Примеры
Входные параметры:
{
"call_id": 7227302459583111000
}
Выходные параметры:
{
"speech_analytic": {
"url": "https://example.com",
"call_id": "7227302459583111000",
"application_uuid": "80f14680-d069-4aa2-b7b6-e0699231ec17",
"date_time": "2024-11-08T13:22:40Z",
"from": "79999999999",
"to": "79134444444",
"start_time": "2024-11-08T13:21:39Z",
"end_time": "2024-11-08T13:22:39Z",
"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. Нет"
}
]
},
"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": [
{
"classifier": "Эскалация обращения",
"channel_tag": "0",
"total_count": "2"
},
{
"classifier": "Эскалация обращения",
"channel_tag": "1",
"total_count": "0"
},
{
"classifier": "Эскалация обращения",
"channel_tag": "",
"total_count": "0"
},
]
},
{
"channel_tag": "1",
"text": "все",
"start_time": "6s",
"end_time": "7s",
"classifiers": []
},
"transcription": {
"phrases": [
{
"channel_tag": "0",
"text": "Здравствуйте! Позовите старшего по смене.",
"start_time": "2s",
"end_time": "6s",
"classifiers": [
{
"classifier": "Приветствие",
"highlighted_text": "здравствуйте"
},
{
"classifier": "Требует начальника",
"highlighted_text": "позовите старшего"
},
]
}
]
},
}
}