$imputer.cacheAudio
Метод $imputer.cacheAudio
позволяет кэшировать реплику на сервере: на один час или навсегда.
Вызов этого метода может потребоваться, чтобы избежать задержек — пауз во время диалога бота с абонентом.
подсказка
Реплику нужно кэшировать заранее — перед ее использованием в сценарии. Предусмотрите стейт в вашем сценарии, где это можно сделать.
Синтаксис
Метод $imputer.cacheAudio
принимает аргументы:
Аргумент | Тип | Описание | Обязательный |
---|---|---|---|
replicaTemplateId | Строка | Идентификатор шаблона реплики. | Да |
variables | Объект | Имена и значения переменных для подстановки в шаблон. Для записи значения можно использовать кириллицу, числа и знаки препинания. Нужно указать столько переменных, сколько будет в реплике. Если в реплике не будет переменных, передайте пустой объект. | Да |
voiceSpeed | Число | Скорость произнесения переменных. Возможные значения: от 0.5 до 2 и undefined , где:• 1 — скорость без изменений.• undefined — скорость не задана. Необходимо указывать, если скорость не была передана для $imputer.generateAudioUrl , но вы хотите передать аргумент unlimitedLifetime . | Нет |
unlimitedLifetime | Логический | Нужно ли навсегда кэшировать реплику. Рекомендуется использовать в исключительных случаях. Если аргумент не передан или указано false , реплика будет кэширована на один час. | Нет |
предупреждение
Если вы хотите, чтобы реплика была кэширована, аргументы
replicaTemplateId
, variables
, voiceSpeed
, переданные для метода $imputer.cacheAudio
, должны совпадать с теми, что вы передаете для $imputer.generateAudioUrl
.Примеры вызова
- ECMAScript 5
- ECMAScript 6
$imputer.cacheAudio("offer", {});
$imputer.cacheAudio("offer", {"amount": "десять"});
$imputer.cacheAudio("offer", {"amount": "десять"}, 1, true);
$imputer.cacheAudio("offer", {"amount": "десять"}, undefined, true);
В среде ECMAScript 6 метод является асинхронным:
await $imputer.cacheAudio("offer", {});
await $imputer.cacheAudio("offer", {"amount": "десять"});
await $imputer.cacheAudio("offer", {"amount": "десять"}, 1, true);
await $imputer.cacheAudio("offer", {"amount": "десять"}, undefined, true);
Пример использования
- ECMAScript 5
- ECMAScript 6
state: Hello
q!: $regex</start>
# "Здравствуйте! Как вас зовут?"
audio: {{ $imputer.generateAudioUrl("helloPhrase", {}) }}
state: GetName
q: *
# Кэширование реплики с идентификатором thanks ("Спасибо, $client.name!").
script:
$client.name = $parseTree.text;
$imputer.cacheAudio("thanks", {"name": $client.name});
# "Оцените, пожалуйста, качество сервиса."
audio: {{ $imputer.generateAudioUrl("estimateQuality", {}) }}
# ...
state: Thanks
intent!: /Thanks
# Воспроизведение кэшированной реплики thanks ("Спасибо, $client.name!").
audio: {{ $imputer.generateAudioUrl("thanks", {"name": $client.name}) }}
# "Будем дальше улучшать наш сервис."
audio: {{ $imputer.generateAudioUrl("improveService", {}) }}
state: Goodbye
intent!: /Goodbye
# Воспроизведение кэшированной реплики thanks ("Спасибо, $client.name!").
audio: {{ $imputer.generateAudioUrl("thanks", {"name": $client.name}) }}
# "До свидания!"
audio: {{ $imputer.generateAudioUrl("bye", {}) }}
state: Hello
q!: $regex</start>
# "Здравствуйте! Как вас зовут?"
audio: {{ $imputer.generateAudioUrl("helloPhrase", {}) }}
state: GetName
q: *
# Кэширование реплики с идентификатором thanks ("Спасибо, $client.name!").
scriptEs6:
$client.name = $parseTree.text;
await $imputer.cacheAudio("thanks", {"name": $client.name});
# "Оцените, пожалуйста, качество сервиса."
audio: {{ $imputer.generateAudioUrl("estimateQuality", {}) }}
# ...
state: Thanks
intent!: /Thanks
# Воспроизведение кэшированной реплики thanks ("Спасибо, $client.name!").
audio: {{ $imputer.generateAudioUrl("thanks", {"name": $client.name}) }}
# "Будем дальше улучшать наш сервис."
audio: {{ $imputer.generateAudioUrl("improveService", {}) }}
state: Goodbye
intent!: /Goodbye
# Воспроизведение кэшированной реплики thanks ("Спасибо, $client.name!").
audio: {{ $imputer.generateAudioUrl("thanks", {"name": $client.name}) }}
# "До свидания!"
audio: {{ $imputer.generateAudioUrl("bye", {}) }}
В этом примере реплики без переменных также были использованы в сценарии при помощи вызова метода $imputer.generateAudioUrl
.
Это было сделано, чтобы избежать разницы в звучании реплик: c переменными и без.
Подробнее см. в разделе Гибридный синтез от Just AI.