Динамические сценарии
Динамические сценарии — это ключ к созданию по-настоящему умного и полезного ассистента. Они позволяют вашему боту выходить за рамки заготовленных ответов, обращаться к внешним системам, получать данные в реальном времени и предоставлять персонализированные ответы.
Статические vs. Динамические сценарии
Чтобы понять силу динамических сценариев, давайте сравним их со статическими.
- Статические сценарии работают с заранее известной информацией. Они идеальны для ответов на общие вопросы (FAQ), где ответ всегда одинаков.
- Пример: «Какие у вас часы работы?» → «Мы работаем с 9:00 до 18:00.»
- Динамические сценарии работают с изменяемыми, персональными данными. Они необходимы, когда ответ зависит от конкретного пользователя или внешней информации.
- Пример: «Где мой заказ?» → «Ваш заказ #12345 будет доставлен завтра в 15:00.»
Подробнее в razrabotka-dinamicheskogo-scenariya.md
Как работают динамические сценарии?
Магия динамических сценариев заключается в сниппетах — фрагментах кода на JavaScript, которые выполняются прямо внутри сценария.
С помощью сниппетов ваш ассистент может:
- Обращаться к вашему API для получения или отправки данных (например, проверить статус заказа, узнать баланс пользователя, создать новую заявку).
- Выполнять сложные вычисления (рассчитать стоимость доставки, применить скидку).
- Динамически формировать текст ответа, подставляя в него полученные данные.
Пример: Проверка статуса заказа
Давайте посмотрим, как это работает на практике. Пользователь спрашивает: "Где мой заказ #S-54321?"
-
Сценарий определяет намерение (
узнать_статус_заказа) и извлекает сущность (номер_заказа: "S-54321"). -
Запускается реакция "Сниппет", в которой выполняется следующий код:
async function main(facts) {
// Получаем номер заказа, извлеченный из сообщения пользователя
const orderId = facts.get('номер_заказа');
try {
// Отправляем запрос к API вашего магазина
const response = await fetch(`https://api.your-shop.com/orders/${orderId}`);
const orderData = await response.json();
// Формируем динамический ответ
const message = `Ваш заказ №${orderId} сейчас в статусе "${orderData.status}". Ожидаемая дата доставки: ${orderData.delivery_date}.`;
// Отправляем ответ пользователю
await mail.sendText(message);
} catch (error) {
// Если что-то пошло не так (например, заказ не найден)
await mail.sendText('К сожалению, не удалось найти информацию по вашему заказу. Пожалуйста, проверьте номер и попробуйте еще раз.');
}
} -
Пользователь получает персонализированный ответ, основанный на данных из вашей системы.
Требования к API Для реализации динамических сценариев на вашей стороне должен быть подготовлен соответствующий API, к которому сможет обращаться платформа. Наша команда поможет с настройкой интеграции.