Отрасли

Чат-бот для доставки еды: заказ в переписке или мини-приложение

Чат-бот для доставки еды принимает заказ по пяти шагам: меню, корзина, адрес, время, оплата. В переписке кнопками собирают заказ из короткого меню, корзину с размерами и добавками удобнее вести в мини-приложении. Разработка — от 20 000 ₽, поддержка — от 5 000 ₽ в месяц. Дороже всего в такой задаче стоят адрес, стоп-лист и передача заказа на кухню.

15 мин чтения Дмитрий Киселев, основатель ЭТОБОТ и ЭТОЧАТБОТ

Заказ еды выглядит как меню и кнопка «Оформить». Дорогой такую задачу делают три места: адрес, стоп-лист и путь заказа до кухни. Ниже — шаги сценария, сравнение переписки с мини-приложением, ограничения каналов и смета.

Короткий ответ

  1. Пять шагов заказа: меню и позиция, корзина, адрес и зона доставки, время, оплата. Шестой шаг — статусы заказа — в задании обычно не описан, и считается он отдельно.
  2. Короткое меню собирают кнопками, меню с модификаторами — экраном. Замеренного порога у нас нет: перелом даёт не длина списка, а модификаторы. Как только у позиции появляются размер, добавки и количество, кнопки превращаются в лабиринт.
  3. Адрес — самое дорогое поле сценария. Зону доставки проверяют до сборки корзины, а подъезд, квартиру, этаж и код домофона спрашивают отдельно: точка на карте их не содержит.
  4. Статус заказа разрешает канал, а не бот. Telegram — только тому, кто нажал «Запустить»; ВКонтакте — тому, кто разрешил сообщения сообществу, и бессрочно; МАКС — после того, как человек сам начал диалог; в Instagram* писать первым нельзя.
  5. Разработка от 20 000 ₽, поддержка от 5 000 ₽ в месяц. Точную цифру называем после разбора задачи и до начала работ. Сроков не обещаем.

Пять шагов заказа: меню, корзина, адрес, время, оплата

Шаг 1. Меню и позиция. Бот показывает разделы, потом позиции. Пока позиций мало, хватает кнопок. Когда у позиции есть размер, тесто, добавки и количество, один выбор превращается в четыре, и одна позиция стоит четырёх сообщений с кнопками.

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

Шаг 3. Адрес и зона доставки. Зону проверяют до корзины, а не после: иначе человек собирает заказ из восьми позиций и получает «по этому адресу не доставляем» на последнем шаге, когда заказ уже собран, а предложить взамен боту нечего.

Шаг 4. Время. «Как можно быстрее» или «ко времени». Второй вариант требует знать часы работы кухни и правило предзаказа на следующий день, иначе ночной заказ на 9 утра уедет в пустоту.

Шаг 5. Оплата. Онлайн в боте или курьеру при получении. Развилка не про удобство, а про смету: первый вариант тянет кассу, чеки и возвраты, второй перекладывает сверку на человека.

Заказ в переписке или мини-приложение с корзиной

Что сравниваемЗаказ в переписке кнопкамиМини-приложение с корзиной
Менюсообщения с кнопками, каждый раздел — отдельный шагсписок с фото и ценами на одном экране
Позиция с размером и добавками3–4 шага на одну позициюодин экран, всё видно сразу
Корзинасообщение, которое бот перерисовываетпривычная корзина с плюсом и минусом
Адресвопросы по одному полю за разформа с полями и картой
Оплатакнопка оплаты в перепискекнопка оплаты внутри экрана
Стоимость работыниже на стартевыше: это веб-часть, а не сценарий
Когда выбиратькороткое меню, повторные заказы, простые позициидесятки позиций, модификаторы, важна витрина

Ошибка выбора обычно такая: мини-приложение берут ради красоты и получают вторую смету, а кнопками собирают меню с добавками и получают сценарий из десятков ветвей, который потом страшно править. Что такое мини-приложение в Telegram и когда оно нужно вместо бота — разобрано отдельно.

Мини-приложения есть только в Telegram и МАКС. Во ВКонтакте и Instagram* этого варианта нет вообще: там остаются кнопки в переписке или ссылка на обычный сайт, то есть уход из мессенджера.

Работает и смешанный вариант: витрина и корзина экраном, разговор и статусы в переписке.

Где ломается адрес доставки

  • Свободная строка. Человек пишет «Ленина 5» — без города, подъезда и квартиры. Заказ принят, курьер звонит, и смысл автоматизации на этом звонке заканчивается.
  • Зона доставки. Правило зоны надо описать словами заранее: улицы, районы, границы, стоимость доставки по зонам, минимальная сумма. Пока правила нет, бот принимает заказы, которые никто не повезёт.
  • Точка на карте. В переписке человек может отправить геолокацию, и это помогает найти дом. Но подъезд, этаж, квартиру и код домофона точка не содержит: их всё равно спрашивают отдельными вопросами.
  • Справочник адресов. Превратить «Ленина 5» в проверяемый адрес умеет внешний справочник адресов. Работа по чужому API — отдельная строка сметы: объём виден после разбора документации.
  • Сохранённый адрес. Второй заказ короче, если адрес подставляется кнопкой «как в прошлый раз». Заодно это место, где в боте появляются персональные данные.
  • «До двери» или «до подъезда». Это разные обещания, и бот должен называть ваше, иначе клиент придумает его сам.

Где ломается оплата

Оплата курьеру дешевле в разработке: боту достаточно записать способ оплаты в заказ. Дальше идёт ручная сверка — кто сколько привёз, что вернули, что не доехало.

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

Отдельно живут правила, которые всплывают в середине сборки: минимальная сумма, стоимость доставки по зонам, бесплатная доставка от суммы, промокоды. Каждое — арифметика в корзине и текст, который бот показывает до кнопки оплаты.

И механическая ловушка: кнопку «Оформить» нажимают дважды — из нетерпения или из-за медленной сети. Без защиты от повтора на кухню уедут два одинаковых заказа.

Меню, стоп-лист и часы работы кухни

Меню меняется чаще сценария: цены, стоп-позиции, часы работы правят каждую неделю, иногда несколько раз в день. Поэтому «кто правит меню» решается до сборки.

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

Стоп-лист — тот же вопрос, только острее. Позиция кончилась в 19:40, а бот продаёт её, пока кто-то не выключит. Механика простая: тумблер у позиции и человек, который его щёлкает. Без ответственного стоп-лист мёртв.

Часы работы кухни — третье место того же рода. Ночной заказ либо получает «кухня закрыта, принимаем с 10:00», либо оформляется как предзаказ на утро. Оба варианта рабочие, выбрать надо заранее, а не после запуска.

Как заказ попадает на кухню

Куда падает заказКому подходитЧто учесть
Сообщение ответственному в мессенджеродна точка, небольшой потоксообщение теряется в переписке, поэтому дублируется в таблицу
Таблица заказов в кабинете ботанужен список с историей и статусамисмотреть надо в кабинет; отдельного приложения для кухни нет
Ваша система по её APIучёт уже работает, менять его нельзяработа по чужому API — отдельная строка сметы после разбора документации

Шестой шаг, которого в задании обычно нет, — статусы: принят, готовится, передан курьеру, доставлен. Каждый статус — исходящее сообщение, и кто нажимает кнопку, решают заранее. Если заказ живёт в таблице кабинета, статус ставит человек. Если заказ ушёл в вашу систему, статус должен вернуться обратно — иначе обещание «бот напишет, когда курьер выехал» окажется пустым.

Ограничения каналов: кому бот может написать про статус заказа

Право написать первым даёт мессенджер, а не бот. Полный разбор — в статье о том, кто может написать клиенту первым; для доставки важны четыре строки.

КаналКто может написать первымСтатусы заказаЧто учесть в доставке
Telegramтолько тому, кто нажал «Запустить»работаютрассылки по базе телефонов не существует: по номеру бот человека не найдёт
ВКонтактетому, кто разрешил сообщения сообществу, — бессрочноработаютокна в 24 часа у ВК нет — это чужое ограничение, попавшее в разговор по инерции
МАКСтолько после того, как человек начал диалогработаютпрофиль организации, ИП или самозанятого; верификация несколько рабочих дней
Instagram*написать первым нельзяне обещаемлегальные входы — ответ на комментарий, реакция на сторис, кодовое слово в личных сообщениях

Про Instagram* скажем прямо: принять заказ в директе можно, а сообщить через сорок минут «курьер выехал» официальный API не даёт. Первый директ после комментария уходит как Private Reply, и попытка одна: отказ сжигает слот, повторная отправка не спасает, спасает публичная подсказка в комментариях. Поэтому заказ из Instagram* уводим в Telegram-бота ссылкой, и статусы приходят оттуда.

В МАКС вход строже: бота заводит организация, ИП или самозанятый — резидент РФ, кабинет на business.max.ru, верификация занимает несколько рабочих дней. Обращения к API требуют доверенного российского корневого сертификата — без него запросы не проходят, и выглядит это как «бот молчит без ошибок».

Персональные данные в заказе: имя, телефон, адрес

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

Инженерная часть короткая: не пересылайте адреса и телефоны в общие чаты и заранее решите, что происходит с сохранённым адресом, когда клиент просит удалить его.

Создать тг бот доставки еды: что нужно с вашей стороны

Чтобы создать тг бот доставки еды и не переделывать его трижды, до начала работ нужны шесть вещей.

  1. Меню файлом: разделы, позиции, цены, модификаторы. Не «пицца», а «пицца 30 см, 890 ₽, тесто на выбор, добавки из списка».
  2. Правила доставки: зоны, стоимость по зонам, минимальная сумма, бесплатная доставка от суммы, «до двери» или «до подъезда».
  3. Часы работы кухни и правило ночных заказов: отказ или предзаказ.
  4. Способ оплаты: курьеру, онлайн или оба. Если онлайн — кто ведёт кассу и как оформляются возвраты.
  5. Куда падает заказ и кто ставит статусы: мессенджер ответственного, таблица в кабинете или ваша система.
  6. Один человек со стороны заказчика, который решает вопросы по меню и стоп-листу. Когда таких людей трое, меню переделывается трижды.

Когда бот для доставки не нужен

Когда меню меняется каждый день, а править его некому. Сначала ответственный за стоп-лист, потом бот — иначе бот будет уверенно продавать то, чего нет на кухне.

Когда поток маленький. Порога в заказах у нас нет, его считают на вашем потоке. Логика простая: пока администратор успевает отвечать сам, хватает автоответчика с меню и контактом, а разработка от 20 000 ₽ и поддержка от 5 000 ₽ в месяц должны на что-то делиться.

Когда нужна логистика или агрегатор, а не приём заказов. Назначение курьеров, маршруты, карта с движением курьера, расчёт смен — это система доставки. Несколько ресторанов, рейтинги и комиссии — платформа. Бот бывает входом и туда, и туда, но сам их не заменяет, и обещать обратное было бы нечестно.

Когда нужна рассылка по базе телефонов. В Telegram её не существует: бот пишет только тому, кто нажал «Запустить», и по номеру человека не найдёт. «Напомнить о себе тем, кто нам не писал» решается во ВКонтакте: сообщество может написать первым тому, кто разрешил ему сообщения, и срок для этого не истекает.

Когда весь заказ должен жить в одном Instagram*. Принять заказ там можно, сообщить статус — нет. Если статусы — половина смысла проекта, второй канал придётся добавить.

Сколько стоит бот для доставки еды

Разработка — от 20 000 ₽, поддержка — от 5 000 ₽ в месяц. Точную цифру называем после разбора задачи и до начала работ, а не в процессе; как считаем и что входит в поддержку — в разделе про цены на разработку и поддержку.

Что двигает смету именно в доставке:

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

Сроков мы не обещаем. Единственный подтверждённый срок в статье — верификация профиля в МАКС, несколько рабочих дней, и он от нас не зависит.

Отдельная строка — ИИ. Если заказ принимается словами («две пиццы и колу на восемь вечера»), на первой линии стоит ИИ-агент, и его работа считается по расходу токенов: сколько потратил, столько и стоит, фиксированной ставки за месяц у нас нет. Оплату зарубежных ИИ-сервисов иностранными картами помогаем провести отдельно. Требование к такому агенту одно — не выдумывать позиции и цены, которых нет в меню; как сделать так, чтобы ИИ-агент не придумывал, разобрано отдельно.

Что запомнить

  1. Порядок шагов важнее текстов: зона доставки проверяется до сборки корзины, а не на кнопке «Оформить».
  2. Точка на карте адрес не заменяет: подъезд, этаж, квартиру и код домофона бот спрашивает отдельными вопросами, а проверка адреса по внешнему справочнику — отдельная строка сметы.
  3. Стоп-лист работает только при живом ответственном: тумблер у позиции — программа, щелчок в 19:40 — человек.
  4. Канал решает, будут ли статусы вообще: если заказы приходят только из Instagram*, обещание «напишем, когда курьер выехал» придётся переносить в другой мессенджер.
  5. Онлайн-оплата — это касса, чеки и частичные возвраты, а не одна кнопка; двойное нажатие «Оформить» без защиты от повтора даёт два заказа на кухне.
  6. Смету двигает не «сложность бота», а число модификаторов, зон доставки и статусов, способ оплаты и то, откуда бот берёт меню. Работа ИИ-агента считается по расходу токенов, сроков мы не обещаем.

Чтобы посчитать смету, напишите в @etoBotTeamBot три вещи: меню файлом, правила зон и минимальной суммы и канал, где сейчас принимаются заказы. Этого обычно хватает, чтобы назвать цифру до начала работ.

Частые вопросы

Как создать тг бот доставки еды?

Сначала собрать меню файлом с ценами и модификаторами, описать зоны доставки и часы кухни, выбрать способ оплаты. Потом собирается сценарий из пяти шагов: меню, корзина, адрес, время, оплата. Шестым идут статусы заказа. В Telegram бот пишет только тому, кто нажал «Запустить», поэтому статусы работают без оговорок.

Сколько стоит чат-бот для доставки еды?

Разработка — от 20 000 ₽, поддержка — от 5 000 ₽ в месяц. Точную цифру называем после разбора задачи и до начала работ. Смету двигают число позиций и модификаторов, количество зон доставки, онлайн-оплата с возвратами, источник меню и стоп-листа, число каналов. Сроков не обещаем.

Что выбрать для доставки: заказ в переписке или мини-приложение с корзиной?

Переписка кнопками дешевле и подходит короткому меню с простыми позициями. Мини-приложение с корзиной нужно, когда у позиций есть размер и добавки: это веб-часть со своей сметой. Замеренного порога у нас нет — перелом даёт не длина меню, а модификаторы. Проверьте и канал: мини-приложения есть только в Telegram и МАКС. Рабочий и смешанный вариант: витрина экраном, статусы в переписке.

Как бот для доставки проверяет адрес?

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

Можно ли принимать оплату в боте для доставки еды?

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

Можно ли сделать бота для доставки в МАКС?

Да, но вход строже, чем в Telegram. Бота заводит организация, ИП или самозанятый — резидент РФ, кабинет на business.max.ru, верификация профиля занимает несколько рабочих дней, число ботов на профиль ограничено. Писать человеку можно только после начала диалога. Обращения к API МАКС требуют доверенного российского корневого сертификата.

Можно ли принимать заказы на доставку через Instagram*?

Принять заказ можно: человек приходит из комментария под постом, по реакции на сторис или по кодовому слову в личных сообщениях, дальше обычный сценарий. Сообщить статус позже нельзя — написать первым в Instagram* официальный API не даёт. Первый директ после комментария уходит как Private Reply, попытка одна: отказ сжигает слот.

Может ли бот сообщать статус заказа клиенту?

Да, если канал разрешает написать первым: в Telegram — тому, кто нажал «Запустить», во ВКонтакте — тому, кто разрешил сообщения сообществу, в МАКС — после начала диалога. В Instagram* статусы не обещаем. Второе условие — статус должен откуда-то приходить: кнопкой в кабинете или из вашей системы.

Нужен бот, который делает это у вас?

Читать дальше