$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.

Примеры вызова

$imputer.cacheAudio("offer", {})
$imputer.cacheAudio("offer", {"amount": "десять"})
$imputer.cacheAudio("offer", {"amount": "десять"}, 1, true)
$imputer.cacheAudio("offer", {"amount": "десять"}, undefined, true)

Пример использования

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", {}) }}

В этом примере реплики без переменных также были использованы в сценарии при помощи вызова метода $imputer.generateAudioUrl. Это было сделано, чтобы избежать разницы в звучании реплик: c переменными и без. Подробнее см. в разделе Гибридный синтез от Just AI.