Демо сделано Flow Lab без заказчика. Пекарня «Кедр» выдумана.

демо бота заказов
Telegram-бот · принимает заказы, пока вы спите

Пекарня закрыта. А заказ всё равно принят.

В 01:39 покупатель открывает Telegram, выбирает торт, сразу видит настоящую цену и ближайшее возможное время выдачи и оставляет телефон. Утром владелец находит готовый заказ, а не пропущенное сообщение. Всё на этой странице работает на том же движке диалога, что и живой бот. Нажимайте кнопки и смотрите.

Это мой собственный демо-проект. Пекарня «Кедр», её меню и ночь ниже выдуманы, данных клиентов здесь нет. Телефон на странице — окно в стиле Telegram: в нём прямо в браузере работает движок бота, это не сам Telegram. Тот же файл движка ведёт живого бота через Telegram Bot API.

Закажите что-нибудь

Нажимайте кнопки или пишите сами. Бот понимает 25.09, 25 сентября, завтра, обычные числа и прямо говорит, если что-то не получится.

Пекарня «Кедр»
бот · в сети
Всё работает прямо на странице: без сети и ключей, данные никуда не уходят.

Что видит владелец на телефоне

0
Пока пусто. Оформите заказ в чате, и он сразу появится здесь.

Так заказы сохраняются

ЗаказЧтоКогдаПолучениеСумма
Заказов пока нет.

Живой бот пишет ту же запись в orders.json. А может писать в Google Таблицу или CRM пекарни: для этого меняется один небольшой файл.

Повтор одной ночи

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

Ещё не запускали.

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

Один движок, два входа

Диалог — чистый конечный автомат: он получает текущее состояние и одно событие и возвращает следующее состояние и ответ. Живой бот подаёт в него сообщения из Telegram, эта страница подаёт ваши нажатия. Отдельной версии для демо нет: тест падает, если копия на странице расходится с исходными файлами. Русская и английская версии работают на одном движке, меняется только языковой пакет: фразы, меню и цены в рублях.

Сделан, чтобы пережить ночь

Если ответ потерялся, Telegram присылает сообщение повторно, поэтому бот запоминает номер каждого и не обрабатывает дважды. Сбои сети и лимиты Telegram бот переживает повторными попытками с растущей паузой. Кнопки из старых сообщений он узнаёт и вежливо отвечает, а не портит не до конца оформленный заказ. Заказ записывается на диск до того, как покупатель видит «Готово».

Без сторонних пакетов, без ключей в коде

Бот написан на чистом Node.js, без npm-зависимостей, которые нужно проверять и обновлять. Токен лежит в файле .env, который не попадает в репозиторий, и никогда не печатается в журнале. Хостинг оформляется на аккаунт пекарни, так что данные остаются под её контролем.

Что входит в месяц поддержки

Бот не плакат: меняется меню, цены, сам Telegram. Ежемесячная поддержка держит его в рабочем состоянии:

  • Меню, цены, сроки и зоны доставки обновляются, как только пекарня их меняет.
  • Присмотр за ботом: если он перестанет отвечать, я узнаю раньше покупателей.
  • Изменения Telegram API учитываются до того, как что-то сломают.
  • Небольшие доработки по мере того, как становится ясно, о чём спрашивают покупатели: новые товары, вопросы, время выдачи.
  • Отчёт раз в месяц: сколько заказов принял бот и где покупатели бросали заказ.
  • Резервные копии заказов и выгрузка в то, чем пекарня ведёт учёт.