$dialer.getBotSpeech
Метод возвращает данные о воспроизведении реплики бота в телефонном канале.
Синтаксис
Метод вызывается без аргументов:
$dialer.getBotSpeech();
Возвращаемое значение
Метод возвращает массив объектов со свойствами:
Свойство | Тип | Описание |
---|---|---|
botState | Строка | Стейт, из которого были переданы данные для воспроизведения. |
reply | Объект | Данные об ответе бота. Содержание объекта зависит от реакций бота, в которых были переданы данные для воспроизведения. |
cause | Строка | Результат воспроизведения реплики. Возможные значения:
|
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
.
Чтобы записать информацию о воспроизведении реплики в комментарий в аналитику:
- Вызовите метод
getBotSpeech
, чтобы получить данные о реплике бота. - Если все данные определены, переберите в цикле все ответы и создайте текст комментария.
- Запишите комментарий в аналитику с помощью метода
$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 секунд.