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

$dialer.setTtsConfig

Метод переопределяет настройки провайдера TTS телефонного канала, через который проходит текущий звонок.

подсказка
Новые настройки распространяются только на текущую сессию и не влияют на глобальные настройки канала. Они используются, пока не будут переопределены еще раз или пока звонок не завершится.

Синтаксис

Метод принимает в качестве аргумента объект с новыми настройками TTS. Передавать каждый раз все настройки провайдера не нужно — достаточно указать те, которые вы хотите переопределить.

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

подсказка
Для каждого провайдера можно переопределить разный набор настроек. Вы можете узнать, какие это настройки, в статье про $dialer.getTtsConfig, а также получить их в сценарии через этот метод.
// Настройки для провайдера Google
$dialer.setTtsConfig({
lang: "tr-TR",
voice: "tr-TR-Wavenet-E",
});
предупреждение
Если вы укажете в объекте поля, которые провайдер не поддерживает, они будут проигнорированы. Если вы передадите в метод не объект (например, строку), в сценарии возникнет ошибка.

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

Некоторые провайдеры, например Google и Azure, для большинства языков поддерживают как женские, так и мужские голоса. Вы можете менять голос бота из сценария в зависимости от характеристик пользователя (например, пола или возраста) или по его желанию.

state: SwitchGender
q!: * измени* пол *
script:
var provider = $dialer.getAsrProvider(); # Получение имени текущего провайдера

if (provider === "google") {
var voice = $dialer.getTtsConfig().voice; # Получение текущего голоса
$temp.isMaleVoice = voice.endsWith("B") || voice.endsWith("D"); # Мужские голоса заканчиваются на B и D

var newVoiceLetter = (isMaleVoice ? ["A", "C"] : ["B", "D"])[$reactions.random(2)];
$dialer.setTtsConfig({ voice: "ru-RU-Wavenet-" + newVoiceLetter });
} else {
# Для других провайдеров переопределяемые поля и значения могут быть другими
}
a: Теперь я говорю {{$temp.isMaleVoice ? "женским" : "мужским"}} голосом.