СтатьяБоты и мини-приложения

Телеграм-бот или мини-приложение: чем отличаются и что заказывать

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

Бот — это переписка. Он присылает сообщения и кнопки под ними, человек отвечает текстом или нажатием. Всё происходит в ленте чата, одно за другим.

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

Разница не в технологии, а в форме взаимодействия: разговор или экран.

Когда хватает бота

Бот хорош там, где действие линейное: вопрос — ответ — следующий вопрос.

  • Приём заявки. Что нужно, для какого бизнеса, в какой срок, какой бюджет. Бот-квалификатор задаёт эти вопросы по очереди и присылает владельцу готовую карточку, а нецелевое отсеивает до менеджера. Экран здесь ничего не добавил бы — подробно о таком боте.
  • Уведомления. Статус заказа, напоминание о записи, новая заявка. Сообщение в чате — ровно та форма, которая нужна.
  • Ответы на типовые вопросы и выдача материалов: прайс, инструкция, файл.
  • Простая оплата одной суммы прямо в переписке.

Признак простой: если весь сценарий можно описать как разговор с вежливым администратором, нужен бот.

Когда без экрана не обойтись

Экран нужен, когда человеку надо видеть много сразу и выбирать.

  • Каталог. Двадцать позиций кнопками под сообщением — это неудобно, двести — невозможно. Фильтры, поиск, карточки товаров — задача экрана.
  • Выбор даты и времени. Бот, который перебирает свободные слоты кнопками, раздражает уже на третьем шаге. Календарь, где занятое сразу видно, решает это одним взглядом — в мини-приложении он работает так же, как на сайте.
  • Кабинет с данными. Статистика, история, статусы, таблицы. В партнёрской платформе Recca повседневные действия перенесены в телеграм, и разделение там естественное: уведомления о событиях приходят сообщениями, а смотреть цифры и статусы удобнее на экране.
  • Корзина из нескольких позиций с изменением количества.

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

Мини-приложение почти всегда идёт вместе с ботом

Это часто упускают при заказе. Мини-приложение не существует само по себе: открывается оно через бота, и написать человеку первым оно не может — сообщения в чат отправляет бот. Напоминание о записи, подтверждение оплаты, ответ менеджера придут от бота.

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

Как мини-приложение устроено изнутри

Три части, и каждую надо сделать отдельно:

Страница. Обычный сайт, который должен открываться по защищённому адресу. Статической страницы достаточно: в моём демо мини-приложения «визитка разработчика» она собрана тем же движком, что и этот сайт, и лежит на бесплатном хостинге.

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

Бот. Точка входа и канал уведомлений.

Две ошибки, которые я допустил сам

В раннем мини-приложении обе проблемы были моими, и обе типичны.

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

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

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

Про оплату

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

Как решить за пять минут

Что делает человек Что нужно
Отвечает на вопросы, оставляет заявку Бот
Получает уведомления и напоминания Бот
Выбирает из каталога, фильтрует, сравнивает Бот и мини-приложение
Выбирает дату и время из свободных Бот и мини-приложение
Смотрит статистику, историю, статусы Бот и мини-приложение

Если сомневаетесь — начните с бота. Экран к нему добавляется потом, не переделывая то, что уже работает, а бот останется точкой входа и каналом уведомлений в любом случае. Обратный путь — сначала экран, потом выяснить, что людям хватало трёх вопросов, — обходится дороже.

Следующий шаг

Понять, что нужно вашей задаче

Напишите в Telegram пару предложений о задаче: что за бизнес, что должно получиться и что уже пробовали. В ответ — понятный план и цена. Без брифов на десять страниц.

© Антон Ложкин Проекты под NDA в подборку не входят.