Бот на сайте видит, что в корзине
Сценарий спрашивает у страницы, что сейчас у посетителя в корзине, и отвечает с учётом этого.
Как выглядит сценарий
- Исполнение + данные
- LLM
Бот, который не знает, что человек уже положил в корзину, отвечает как справочник: общими словами про доставку вообще. А посетитель спрашивает про свой заказ. Разница закрывается одной нодой и десятью строками на вашей странице.
Что внутри
- Вопрос посетителя — вход.
- Что в корзине — нода, которая вызывает функцию, объявленную на вашей странице, и ждёт от браузера ответа. Так сценарий узнаёт то, что знает только страница.
- Ответ с учётом корзины — агент. В его промпт подставляются и вопрос, и содержимое корзины.
- Ответ в виджете — выход.
Тем же способом бот узнаёт выбранный тариф, город из шапки, шаг оформления заказа — всё, что живёт на странице и никогда не доезжает до сервера.
Что настроить под себя
- Имя функции в ноде должно совпадать с тем, что объявлено на сайте.
- Промпт агента. Сейчас там сказано не выдумывать товары при пустой корзине и не называть внутренние идентификаторы: без этой строки бот однажды процитирует артикул.
- Таймаут. Десять секунд по умолчанию. Функция, которая сама ходит на сервер, может не успеть, а шаг тогда падает — держите её простой.
Что подключить
Внешних сервисов не нужно, нужна правка на вашем сайте. Рядом с кодом виджета объявите функцию с тем же именем:
<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>
Возвращать функция должна обычный объект. Отдавайте только то, что не жалко показать: всё, что она вернёт, уедет в модель.