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

Динамические сценарии

Динамические сценарии — это ключ к созданию по-настоящему умного и полезного ассистента. Они позволяют вашему боту выходить за рамки заготовленных ответов, обращаться к внешним системам, получать данные в реальном времени и предоставлять персонализированные ответы.

Статические vs. Динамические сценарии

Чтобы понять силу динамических сценариев, давайте сравним их со статическими.

  • Статические сценарии работают с заранее известной информацией. Они идеальны для ответов на общие вопросы (FAQ), где ответ всегда одинаков.
    • Пример: «Какие у вас часы работы?» → «Мы работаем с 9:00 до 18:00.»
  • Динамические сценарии работают с изменяемыми, персональными данными. Они необходимы, когда ответ зависит от конкретного пользователя или внешней информации.
    • Пример: «Где мой заказ?» → «Ваш заказ #12345 будет доставлен завтра в 15:00.»

Подробнее в razrabotka-dinamicheskogo-scenariya.md

Как работают динамические сценарии?

Магия динамических сценариев заключается в сниппетах — фрагментах кода на JavaScript, которые выполняются прямо внутри сценария.

С помощью сниппетов ваш ассистент может:

  • Обращаться к вашему API для получения или отправки данных (например, проверить статус заказа, узнать баланс пользователя, создать новую заявку).
  • Выполнять сложные вычисления (рассчитать стоимость доставки, применить скидку).
  • Динамически формировать текст ответа, подставляя в него полученные данные.

Пример: Проверка статуса заказа

Давайте посмотрим, как это работает на практике. Пользователь спрашивает: "Где мой заказ #S-54321?"

  1. Сценарий определяет намерение (узнать_статус_заказа) и извлекает сущность (номер_заказа: "S-54321").

  2. Запускается реакция "Сниппет", в которой выполняется следующий код:

    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('К сожалению, не удалось найти информацию по вашему заказу. Пожалуйста, проверьте номер и попробуйте еще раз.');
    }
    }
  3. Пользователь получает персонализированный ответ, основанный на данных из вашей системы.

warning

Требования к API Для реализации динамических сценариев на вашей стороне должен быть подготовлен соответствующий API, к которому сможет обращаться платформа. Наша команда поможет с настройкой интеграции.