ym88659208ym87991671
Поддержка разных голосов во Framework | Документация для разработчиков

Поддержка разных голосов во Framework

Обновлено 8 декабря 2023

В SmartApp Framework реализована поддержка разных голосов ассистента на уровне сценариев. Это помогает упростить создание сценариев, в которых ответы зависят от голоса и его пола, а также от пола пользователя.

Чтобы использовать поддержку голосов ассистента, создайте файл static/references/bundles/bundles.json.

Это словарь, в котором ответы виртуального ассистента сгруппированы с помощью элемента bundle. Вы можете самостоятельно решить, как именно группировать ответы ассистента. Например, ответы в рамках одного сценария можно объединить в один bundle.

Добавьте в файл static/references/bundles/bundles.json следующее:

# если файла нет, создайте его
{
# Вариативность в зависимости от голоса
"bundle_hello_scenario": {
"key_answer.Сбер": [
"Я — Сбер! Ваш виртуальный ассистент",
"Меня зовут Сбер. Прошу любить и не жаловаться! Простите за глупую шутку, волнуюсь"
],
"key_answer.Джой": [
"Меня зовут Джой, я твой виртуальный ассистент!"
],
"key_answer.Афина": [
"Я Афина. Ваш гениальный ассистент. Простите, виртуальный"
],
"key_answer": [
"Здравствуйте! Чем могу помочь?"
]
},

# Вариативность в зависимости от голоса и пола пользователя
"bundle_thanks_scenario": {
"key_1.Афина.female": [
"Спасибо, красавица!",
"Большое спасибо! Ты прекрасна!"
],
"key_1.Джой.male": [
"Благодарю тебя, джентльмен!"
]
},

# Вариативность в зависимости от пола голоса и пола пользователя
"bundle_waiting_scenario": {
"key_2.female_to_female": [
"Ты меня ждала, а я была занята..."
],
"key_2.male_to_female": [
"Ты меня ждала, а я был занят..."
],
"key_2.male_to_male": [
"Ты меня ждал, а я был занят..."
],
"key_2.female_to_male": [
"Ты меня ждал, а я была занята..."
],

# Ответ по умолчанию, если ничего не смогли подобрать
"key_2": [
"Ждали?! А вот и я!"
]

}
}

Затем используйте bundles, чтобы сформировать ответ внутри сценария.

Пример:

{
"type": "string",
"command": "ANSWER_TO_USER",
"nodes": {
"pronounceText": "{{ gender_sensitive_text('bundle_scenario_name', 'key_answer') }}",
"items": [
{
"bubble": {
"text": "{{ gender_sensitive_text('bundle_scenario_name', 'key_answer') }}"
}
}
]
}
}

Когда сценарий формирует ответ пользователю, происходит вызов gender_sensitive_text. Он подставляет нужную фразу в зависимости от голоса ассистента, его пола и пола пользователя. Если ни одна фраза не подходит, используется фраза по умолчанию с ключом key_answer.

Обратите внимание, gender_sensitive_text поддерживает вариативность ответа внутри каждого ключа. Например, ключ key_answer.Сбер содержит 2 фразы. Выбор одной из них произойдет случайно.

Использование шаблонизатора в bundle

Начиная с версии 1.0.7 SmartApp Framework поддерживает шаблонизатор Jinja внутри bundle.

Вы можете использовать его для генерации строк с имеющимися данными:

{
"bundle_user_id_scenario": {
"key_answer.Сбер": ["Ваш идентификатор: {{ uuid.userId }}"],
"key_answer.Джой": ["Твой идентификатор: {{ uuid.userId }}"],
"key_answer.Афина": ["Ваш идентификатор: {{ uuid.userId }}"]
}
}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.