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

🛒 Интернет-магазин «Пентод»

Что это. Демо-сайт вымышленного магазина электроники: главная, «Каталог», «Покупателям» и «Где заказ». Адрес: https://examples.fixorix.ru/ru/shop.

Что показывает. Переход от «бот пересказывает статью» к «бот отвечает про конкретную сущность из вашей системы». Сценарий делает HTTP-запрос в собственный API магазина и собирает ответ из заказа, а не из статьи базы знаний. Второй механизм этого демо — AI-классификация: недовольные обращения AI помечает как срочные, дальше их разбирает человек.

Что настроено в Fixorix​

ЧтоЗначение
Каналы«Виджет» и Telegram
База знаний13 статей: доставка, оплата, гарантия, возврат, каталог
СценарийОтвет по базе знаний плюс блок «HTTP запрос» к API заказов
AIКлассификация обращения: недовольные обращения помечаются как срочные
Модуль «Тикеты»Не используется в этом примере

Блок «HTTP запрос» ходит по адресу вида /api/orders/{id}, где id — номер заказа, который клиент назвал в переписке. Ответ уже готов к показу: он плоский и на русском, статусы приходят готовыми подписями, а не кодами. Неизвестный номер возвращает 404 и found: false: ответ с кодом 4xx блок «HTTP запрос» отправляет в выход «Ошибка», так что сценарию не нужно разбирать тело.

Что приходит в ответеЧто с этим делает сценарий
Подпись статуса и пояснение, что он означаетОтдаёт клиенту как есть — переписывать статус в сценарии не нужно
Состав заказа, сумма товаров, доставка, итогПомогает клиенту опознать свой заказ
Способ доставки, интервал, пункт выдачи, когда приедет или приехал, признак опозданияОтвечает на вопрос «когда и куда приедет»; при опоздании сценарий уходит в отдельную ветку
Пояснение к заказуОбъясняет, что случилось, если с заказом что-то пошло не так
У этого API нет авторизации, и это сознательно

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

Ограничения блока. Ответ — не больше 1 МиБ, не больше 100 HTTP-вызовов на один запуск сценария. Запросы к приватным адресам и служебным хостам блокируются, поэтому API демо должен быть доступен по публичному адресу.

Что попробовать​

  1. Откройте страницу «Где заказ», введите в поле «Номер заказа» значение 1042 и нажмите «Найти».
  2. Не закрывая страницу, спросите в чате: «Где мой заказ 1042?»
  3. Сравните: сценарий сходит в тот же API и ответит теми же полями, что показаны на экране, — статус «Передан курьеру» и интервал доставки.
Вопрос в чатКакой ответ ждать
«Где мой заказ 1042?»Статус, состав, сумма и интервал доставки — собранные из заказа, а не из статьи
«Заказ 9999, где он?»API отвечает 404, бот честно говорит, что не смог найти заказ, и зовёт человека
«Где заказ 1048?»Бот извинится за опоздание, пообещает перенос на ближайший интервал и возврат стоимости доставки и позовёт человека
«До скольких нужно оформить, чтобы уехало сегодня?»Ответ по базе знаний: отсечка — до 14:00 по московскому времени
«Сколько заказ лежит в пункте выдачи?»5 дней — ответ из статьи базы знаний. Сколько дней осталось у конкретного заказа, показывает только страница «Где заказ» (строка «Хранится ещё»); бот про такой заказ скажет, когда он приехал и в какой пункт

Страница «Где заказ» говорит об этом прямо: ответ собирается из заказа, а не из статьи в базе знаний.

📷 Скриншот: страница «Где заказ» с найденным заказом 1042 (будет добавлен).

Опоздавший заказ​

Чтобы увидеть ветку опоздавшего заказа, спросите про заказ 1048: он у курьера и должен был приехать вчера. API отдаёт его с пометкой «просрочен на 1 день» и пояснением «Курьер не приехал в выбранный интервал…». Бот извинится, пообещает перенос на ближайший интервал и возврат стоимости доставки и передаст разговор человеку.

Доехавшие заказы — например, 1044 в пункте выдачи — просроченными не считаются: и страница, и API показывают, сколько дней назад заказ приехал.

Что есть на сайте​

Каталог. Телефоны, ноутбуки и мониторы, звук — с характеристиками, ценой, наличием и сроком гарантии (12, 24 или 36 месяцев). Отдельным блоком — «Как выбрать».

«Покупателям». Доставка с тарифами, бесплатная доставка от 15 000 ₽ и от 20 000 ₽ по разным тарифам, отсечка «до 14:00 по московскому времени», пункты выдачи и хранение 5 дней. Дальше — оплата, гарантия, возврат, блок «Чего мы не делаем» и частые вопросы.

«Где заказ». Восемь демонстрационных номеров — с 1041 по 1048, каждый в своём статусе: «Принят», «Собирается», «Передан курьеру», «Ждёт в пункте выдачи», «Доставлен», «Возврат оформлен», «Отменён».

Как это устроено​

Каталог, тарифы доставки и правила возврата лежат в одном объекте данных. Из него рендерится сайт и генерируются 13 статей базы знаний — поэтому условия в чате совпадают со страницей «Покупателям».

А вот заказы в базу знаний намеренно не попадают: они отдаются по HTTP в момент вопроса. Загрузи их в базу знаний — и поиск возвращал бы вчерашний замороженный статус, а клиенту нужен сегодняшний.

Правило простое: правила — в базу знаний, состояния — по HTTP.

Ограничения​

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

→ Примеры · Блоки сценариев · AI-классификация · Telegram · База знаний