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

WebApp «Кафе» (cat_cafe)

cat_cafe — готовое мини-приложение Квесчи для кафе, ресторанов, доставки еды, кофеен. Подписчик открывает меню в окне Telegram/MAX, выбирает блюда, формирует заказ — а бот принимает оплату и оповещает кухню.

В отличие от WebApp «Магазин» (cat_shop), cat_cafe заточен под общепит:

  • интерфейс с категориями блюд (закуски, основное, напитки, десерты);
  • понятный визуал с большими фото;
  • быстрый чекаут — клиенту важно сделать заказ за 1-2 минуты.

Когда использовать

  • Доставка еды — кафе, рестораны, пиццерии, суши.
  • Самовывоз — приёмка предзаказа за 30 минут до прихода.
  • Заказ в зале — QR-код на столе → меню → официант приносит.
  • Кофейни — быстрый предзаказ к открытию.
  • Кейтеринг — формирование меню на мероприятие.

Часть 1. Настройка меню

Шаг 1. Создайте приложение добавьте список блюд

Списки / WebAppДобавить приложение каталога → выберите вкладку «Настройки»:

Заполните настройки приложения:

  • Название — заголовок над настройками;
  • Токен бота — для запуска не из кнопки под сообщением;
  • Дизайн — выбор дизайна приложения кафе;
  • Элементы — тексты и цвета кафе;
  • Поиск — настройка поиска и фильтров приложения;
  • Рубрики — добавление рубрик меню.

Список меню

Скриншот 1. Меню в виде списка.

Шаг 2. Подключите WebApp

Раздел Списки / WebApp → Создайте каталог в настройках приложения на вкладке «Товары» (cat_cafe).

ПолеСодержимое
titleНазвание блюда
descriptionПолное описание (состав, граммы, особенности)
descrminКраткое описание для карточки
priceЦена
oldpriceСтарая цена (для акций)
sizeОбъём / порция (200г, 0.3л)
categoryКатегория (Закуски / Основные блюда / Напитки / Десерты)
imageURL фотографии
codeВнутренний артикул для кухни

Настройка WebApp Кафе

Скриншот 2. Настройка приложения для кафе.

Шаг 3. Подключите к мессенджеру

Аналогично cat_shop: через @BotFather зарегистрируйте Menu Button с URL вашего WebApp.

Для кафе очень рекомендуется кнопка-меню в углу окна Telegram — клиент в любой момент может вернуться к меню.


Часть 2. Кнопка WebApp в сценарии

В блоке приветствия или в команде /menu:

  • Тип кнопкиСсылка;
  • Название — «🍽 Меню», «Сделать заказ», «Открыть меню»;
  • Ссылка — скопируйте и вставьте ссылку из приложения.

Дополнительные точки запуска

  • QR-код на столе — ссылка t.me/your_bot?start=table5, в сценарии действий сохраняем table = #{start} → открываем WebApp.
  • Подписка — сразу после подписки кнопка-меню с выбором столика.

Часть 3. Обработка заказа

cat_cafe использует ту же операцию «Каталог: обработка заказа» (cat_order), что и cat_shop. После возврата клиента из приложения текущий блок получает ответ webapp:catalog.

Сохранение данных

В блоке-приёмнике добавьте действие «WebApp/MiniApp»«Каталог: обработка заказа»:

ПеременнаяСодержит
Список заказаГотовая строка с блюдами для отправки клиенту/кухне
Сумма заказаИтоговая сумма
ID заказаУникальный номер для кухни
Наличие заказа1 если есть, 0 если корзина пуста

И массивы для записи в список «Заказы»:

  • title (массив названий блюд),
  • count (количество порций),
  • price (цена за порцию),
  • sum (сумма по позиции),
  • size, code.

Обработка заказа в кафе

Скриншот 3. Сценарий действий после возврата из cat_cafe.


Часть 4. Типовой сценарий «Доставка еды»

Блок 1. Приветствие
«Добро пожаловать в Кафе Уют! Что хотите заказать?»
Кнопка WebApp «🍽 Меню»
↓ webapp:catalog
Блок 2. Обработка заказа
Сценарий действий «До»:
- WebApp/MiniApp → cat_order → переменные
- Условие #{isorder} = 1, иначе блок «Корзина пуста»
- Список «Заказы» addrow с массивами блюд
Сообщение: «Состав заказа: #{orderlist}
Сумма: #{totalsum} ₽
Подтвердить?»
Кнопки: «✅ Подтвердить» / «❌ Отменить»
Блок 3. Адрес доставки
«Введите адрес доставки или нажмите [Самовывоз]»
Ответ → переменная #{address}
Блок 4. Время доставки
«Когда вам доставить?»
Кнопки: «Сейчас (60 минут)» / «На время»
Блок 5. Платёж
Действие «Платежи» → ссылка #{pay_link}
Кнопка «Оплатить»
↓ оплата
Блок 6. Уведомление кухне (цепочка приёма платежа)
Сценарий действий «После»:
- HTTP-запрос в систему ресторана с `#{orderId}`, #{orderlist}, #{address}
- Уведомление в Telegram-канал кухни
Сообщение клиенту: «Заказ `#{orderId}` принят! Курьер выезжает.»

Часть 5. Особенности для кафе

Модификаторы (без лука, без острого)

В простом cat_cafe модификаторы делаются через размеры/цвета-варианты (сами названия "размеры" и "цвета" можно переименовать):

  • блюдо «Бургер обычный»;
  • блюдо «Бургер без лука»;
  • блюдо «Бургер острый».

Для сложных конфигураций — пишите комментарий после оформления заказа в отдельном блоке ([Answer] после возврата из WebApp).

Комментарий к заказу

После возврата из WebApp добавьте блок «Комментарий к заказу»:

  • ответ клиента сохраните в переменную #{order_comment};
  • передавайте на кухню вместе с заказом.

Доставка / Самовывоз

Сделайте две кнопки в блоке после WebApp:

  • «🛵 Доставка» → блок ввода адреса;
  • «👋 Самовывоз» → блок выбора времени.

Время приготовления / доставки

Используйте шаблон [AddMinutes([CurrentTime],60)] — добавит 60 минут к текущему времени для оценки.


Часть 6. Продвинутые сценарии

Сценарий 1. Заказ со стола (QR-код)

  1. На каждом столе — QR с уникальной ссылкой t.me/cafe_bot?start=table7.
  2. Клиент сканирует → в боте срабатывает цепочка по ключу start=table*.
  3. В сценарии действий: table = #{start} → сохраняем в переменную #{table}.
  4. Открываем cat_cafe.
  5. После заказа в «Заказы» сохраняем поле table = #{table}.
  6. Официант видит заказ с номером стола.

Сценарий 2. Привязка к доставочной зоне

  1. В блоке после WebApp → блок «Адрес доставки».
  2. Действие HTTP к геокодеру (Яндекс/Google) → координаты.
  3. Действие JS код — проверка попадания в зоны (полигоны).
  4. Если вне зоны → блок «Извините, не доставляем» + предложение самовывоза.

Сценарий 3. Программа лояльности

  1. В глобальной переменной клиента client_bonus накапливаются баллы.
  2. В блоке после заказа: предложить списать баллы (тоже через выражение).
  3. Списать через действие «Операции с данными» → присвоение.

Сценарий 4. Напоминание о готовности

  1. После оплаты — цепочка с задержкой 30 мин.
  2. Сообщение клиенту: «Ваш заказ #{orderId} готов! Курьер у двери».
  3. Кнопки: «Получил» / «Не получил» → переход в чат с менеджером.

Сценарий 5. Сбор отзывов

  1. Через 1 час после доставки — цепочка с триггером по тегу доставлено.
  2. Сообщение: «Как вам заказ?»
  3. Кнопки: 1-5 ⭐ → запись отзыва в список «Отзывы».

Часть 7. Архитектура

Принцип 1. Меню в приложении, акции в глобальных переменных или списке

Не дублируйте акционные цены в карточках блюд. Создайте g_acted_discount и g_promo_until — а в блоке расчёта применяйте скидку, если активна.

Принцип 2. Категории — критично для UX

Не пихайте 60 позиций в один список без категорий. Клиент должен видеть «Напитки / Основные / Десерты», иначе откажется от заказа.

Принцип 3. Острота, веганство, ккал — фичи

Поля spicy, vegan, kcal — мощные для маркетинга. Подсветка иконками в карточках блюд сильно повышает доверие.

Принцип 4. Кухонный канал — отдельная цепочка

Уведомления на кухню — отдельная цепочка с триггером «успешная оплата». Так кухня видит только оплаченные заказы.

Принцип 5. Логируйте всё

Каждый заказ в список «История». По нему стройте аналитику популярных блюд, средний чек, сезонность.

Принцип 6. Подумайте о провалах

  • Что если оплата не прошла? — Резервный путь «Оплатить курьеру при получении».
  • Что если кухня не приняла заказ? — Резервный путь «Оператор свяжется».

Часть 8. Сравнение с cat_shop

cat_shop (Магазин)cat_cafe (Кафе)
Целевая аудиторияИнтернет-магазинОбщепит
КатегорииОпциональныеКритичны (меню секциями)
Размеры/цветаЧасто (одежда)Редко (только объём)
ДоставкаЧаще на следующий деньСрочная, минуты
ЧекаутПолный (адрес, дата)Быстрый (адрес + время)
МодификаторыИногдаЧасто (без чего-либо)
Время покупкиМинутыСекунды

Если сомневаетесь — берите cat_shop как универсальный, или cat_cafe для быстрых заказов.


Частые ошибки

  • «Список меню» пустой — забыли выбрать список в настройках WebApp.
  • Категории не работают — не заполнено поле category в товарах списка.
  • Заказы не приходят на кухню — нет настроенной цепочки приёма платежа с действием уведомления.
  • Высокий cancellation rate — длинный чекаут (адрес + время + комментарий) сразу после меню. Минимизируйте шаги.
  • #{orderlist} неинформативный — клиент видит «#1, #2». В списке-меню заполните поле descrmin (короткое описание для строки заказа).
  • Telegram не показывает Menu Button — забыли зарегистрировать через @BotFather.

Что дальше