$reactions.ttsWithVariables
Метод задает аудио и шаблон текста для синтеза речи с переменными.
В настройках телефонного канала должны быть активны переключатели Включить Yandex v3 и Использовать переменные. В противном случае вызов метода приведет к ошибке.
Синтаксис
Метод принимает объект с полями audioTemplate и textTemplate.
audioTemplate
audioTemplate — описание аудио, в которое будет вставлена переменная. Содержит поля:
audio— ссылка на аудиофайл с шаблоном фразы.
Файл должен быть публично доступен по протоколу HTTP/HTTPS и удовлетворять требованиям, предъявляемым к аудиозаписям.
-
textTemplate— описание расшифровки аудиофайла:template— текст шаблона. Переменные должны быть обозначены соответствующими именами в фигурных скобках.textVariables— массив объектов, описывающих использованные переменные. Каждый объект содержит поля:name— название переменной.value— расшифровка переменной, использованной в шаблоне.
-
audioVariables— массив объектов, описывающих расположение переменных в аудиозаписи. Каждый объект содержит поля:name— название переменной.startMs— время от начала аудиозаписи до начала воспроизведения переменной в миллисекундах.lengthMs— длительность воспроизведения переменной в миллисекундах.
textTemplate
textTemplate — описание фразы, которую должен синтезировать бот в диалоге с клиентом. Содержит поля:
template— текст шаблона. Переменные должны быть обозначены соответствующими именами в фигурных скобках.textVariables— массив объектов с переменными, которые должны быть подставлены в шаблон. Каждый объект содержит поля:name— название переменной.value— расшифровка переменной.
Структура audioTemplate и textTemplate повторяет формат AudioTemplate и TextTemplate,
описанный в документации Yandex SpeechKit.
Использование
Пример вызова метода из сценария:
$reactions.ttsWithVariables({
"audioTemplate": {
"audio": "https://mybucket.s3-ap-southeast-1.amazonaws.com/myfilename.wav",
"textTemplate": {
"template": "Вам одобрен кредитный лимит в размере {limit} рублей. Ну что, давайте оформим доставку?",
"textVariables": [
{
"name": "limit",
"value": "сто двух тысяч"
}
]
},
"audioVariables": [
{
"name": "limit",
"startMs": 1850,
"lengthMs": 1400
}
]
},
"textTemplate": {
"template": "Вам одобрен кредитный лимит в размере {limit} рублей. Ну что, давайте оформим доставку?",
"textVariables": [
{
"name": "limit",
"value": "пятисот тринадцати тысяч"
}
]
}
});В аудиофайле для данного примера в качестве суммы кредитного лимита озвучено число сто двух тысяч.
В поле audioTemplate передано описание данного аудиофайла с указанием переменной части.
Чтобы улучшить читабельность кода, рекомендуем хранить описания аудио отдельно от места, где вызывается метод, — например, в YAML-справочнике.
Поле textTemplate содержит описание фразы, которую бот воспроизведет в стейте, где вызван метод.
На месте переменной limit бот произнесет фразу пятисот тринадцати тысяч.
В реальном сценарии расшифровки переменных должны отличаться в зависимости от контекста.