← Примеры сценариев

Бот на сайте видит, что в корзине

Сценарий спрашивает у страницы, что сейчас у посетителя в корзине, и отвечает с учётом этого.

Как выглядит сценарий

Вопрос посетителя
Что в корзине▶
Ответ с учётом корзины▶▦
Модель▦
Ответ в виджете▶
  • Исполнение + данные
  • LLM
Открыть у себя →

Бот, который не знает, что человек уже положил в корзину, отвечает как справочник: общими словами про доставку вообще. А посетитель спрашивает про свой заказ. Разница закрывается одной нодой и десятью строками на вашей странице.

Что внутри

  1. Вопрос посетителя — вход.
  2. Что в корзине — нода, которая вызывает функцию, объявленную на вашей странице, и ждёт от браузера ответа. Так сценарий узнаёт то, что знает только страница.
  3. Ответ с учётом корзины — агент. В его промпт подставляются и вопрос, и содержимое корзины.
  4. Ответ в виджете — выход.

Тем же способом бот узнаёт выбранный тариф, город из шапки, шаг оформления заказа — всё, что живёт на странице и никогда не доезжает до сервера.

Что настроить под себя

  • Имя функции в ноде должно совпадать с тем, что объявлено на сайте.
  • Промпт агента. Сейчас там сказано не выдумывать товары при пустой корзине и не называть внутренние идентификаторы: без этой строки бот однажды процитирует артикул.
  • Таймаут. Десять секунд по умолчанию. Функция, которая сама ходит на сервер, может не успеть, а шаг тогда падает — держите её простой.

Что подключить

Внешних сервисов не нужно, нужна правка на вашем сайте. Рядом с кодом виджета объявите функцию с тем же именем:

<script>
  iternaWidget.defineFunction({
    name: "getCart",
    handler: () => ({
      items: window.cart.items.map((i) => ({ title: i.title, qty: i.qty, price: i.price })),
      total: window.cart.total,
      currency: "RUB",
    }),
  });
</script>

Возвращать функция должна обычный объект. Отдавайте только то, что не жалко показать: всё, что она вернёт, уедет в модель.