Перейти к основному содержимому

$dialer.getBotSpeech

Метод возвращает данные о воспроизведении реплики бота в телефонном канале.

Синтаксис

Метод вызывается без аргументов:

$dialer.getBotSpeech();

Возвращаемое значение

Метод возвращает массив объектов со свойствами:

СвойствоТипОписание
botStateСтрокаСтейт, из которого были переданы данные для воспроизведения.
replyОбъектДанные об ответе бота. Содержание объекта зависит от реакций бота, в которых были переданы данные для воспроизведения.
causeСтрокаРезультат воспроизведения реплики. Возможные значения:
  • OK — абонент прослушал реплику;
  • FAIL — произошла ошибка синтеза или воспроизведения;
  • CANCEL — реплика не воспроизводилась;
  • INTERRUPTED_BY_BARGEIN — воспроизведение было прервано по перебиванию;
  • INTERRUPTED_BY_HANGUP — воспроизведение было прервано по событию hangup.
durationSecondsЧислоДлительность воспроизведения реплики в секундах.

Формат объекта с репликой

Объект с репликой бота reply содержит свойства со строковым типом. Если ответ отправлен через:

  • Тег a, метод $reactions.answer или ответ с типом text, объект будет содержать свойства text и ssml — текст реплики и текст с разметкой синтеза речи, если она используется.
  • Тег audio, метод $reactions.audio или ответ с типом audio, объект будет содержать свойство audioSrc — ссылку на аудиофайл audioSrc.
  • Метод $reactions.ttsWithVariables, объект будет содержать свойства text — текст реплики, template — текст шаблона для синтеза речи, audio — ссылку на аудиофайл с шаблоном реплики.

Пример возвращаемого значения

[
{
"botState": "/Start",
"reply": {
"text": "Добрый день!"
},
"cause": "OK",
"durationSeconds": 0.68
},
{
"botState": "/Intro",
"reply": {
"text": "Вам звонят из компании Just AI."
},
"cause": "OK",
"durationSeconds": 2.17
},
{
"botState": "/Promo",
"reply": {
"text": "Мы уверены, вас заинтересует наше предложение."
},
"cause": "INTERRUPTED_BY_HANGUP",
"durationSeconds": 2.35
}
]

Использование в сценарии

Допустим, во время звонка бот информирует о текущих промоакциях. Он произносит текстовую реплику из тега a и затем воспроизводит запись диктора из тега audio.

Чтобы записать информацию о воспроизведении реплики в комментарий в аналитику:

  1. Вызовите метод getBotSpeech, чтобы получить данные о реплике бота.
  2. Если все данные определены, переберите в цикле все ответы и создайте текст комментария.
  3. Запишите комментарий в аналитику с помощью метода $analytics.setComment
state: Promo
q!: * [какие (есть/у вас сейчас)] [промо] ~акция *
a: Сейчас у нас проходит акция!
audio: https://example.com/audio.wav
script:
var botSpeech = $dialer.getBotSpeech();
if (botSpeech !== undefined) {
var comment = "";
botSpeech.forEach(function(speech) {
if (speech.reply.text !== undefined) {
comment += "Реплика бота «" + speech.reply.text + "» из стейта " + speech.botState + " завершилась с результатом " + speech.cause + " за " + speech.durationSeconds + " секунд." + "\n";
}
if (speech.reply.audioSrc != undefined) {
comment += "Аудио " + speech.reply.audioSrc + " из стейта " + speech.botState + " завершилось с результатом " + speech.cause + " за " + speech.durationSeconds + " секунд." + "\n";
}
});
$analytics.setComment(comment);
}

Так, если абонент прослушал реплику, но завершил звонок, пока аудио воспроизводилось, в разделе АналитикаДиалогиФразы будет зафиксирован комментарий вида:

Реплика бота «Сейчас у нас проходит акция!» из стейта /Promo завершилась с результатом OK за 1.58 секунд.
Аудио https://example.com/audio.wav из стейта /Promo завершилось с результатом INTERRUPTED_BY_HANGUP за 5.38 секунд.