Telegram-бот для онлайн записи клиентов
Не так давно я погрузился в разработку Telegram-ботов, эта тема мне очень понравилась, поэтому я решил как углубить свои знания, так и применить их на практике.
Почему Telegram и почему боты?
Телега в последние несколько лет вырвалась вперед за счет очень удобного api и интерфейсов для программистов. Теперь практически каждый программист может запилить своего бота и прикручивать к нему практически безграничный функционал, чем собственно говоря я и занялся.
Откуда пришла идея?
Идея пришла мне, когда я общался с подругами супруги и которые жаловались на то, как и чего им не хватает для работы. А для работы им не хватает хорошего бота, через которого клиенты могли бы записываться к ним на всякого рода бьюти-процедуры, чтобы клиент мог внести предоплату или оплатить полностью, а мастер не сидел и не ждал вхолостую, если клиент вдруг не пришел.
Существующие решения и приложения пытаются охватить сразу весь рынок и в одном приложении. Когда мастер начинает работу в таком приложении - его видят сразу и клиенты и другие мастера и начинается конкуренция. А кому хочется отдавать своих клиентов в другие сервисы?
Поэтому родилась идея - каждому мастеру нужен свой собственный бот, который будет в полном подчинении у мастера.
Немного техники
У Telegram есть интересная особенность - размещать своего бота можно только в одном месте. Нельзя распараллелить и запустить его сразу на нескольких хостах, api начинает ругаться, что бот уже где-то есть. Поэтому нужно создать централизованное хранилище для работы всех ботов. Это была первой интересной задачей-исследованием, в результате которого я получил приложение, которое может обслуживать сразу много ботов в одном месте. Чего не хватает? Не хватает базы, чтобы хранить визиты.
Понеслась...
Прикинув инфраструктуру, я принялся за кодинг. Набросал базу для хранения пользователей, визитов, мастеров, календаря, услуг, уведомлений и рассылок и прочих приблуд. Процесс разработки занял около 2 месяцев. Самой сложной была задача настройки рабочего времени и выборки по визитам, чтобы клиенты не регистрировались "внахлест" и было меньше "окон". Рабочее время должно указываеться на каждый день свое, могут быть перерывы на обед или на профилактику. У каждой услуги могут быть перерывы, услуга может длиться час, а может полчаса или даже 4 часа. Календарей в Telegram не оказалось, разработал свой. Все это пришлось увязывать воедино, но тесты показали хороший результат.
Вторым узким местом стал обработчик событий в телеге для кнопки. По умолчанию, она занимает 60 символов. А у нас полно параметров для хранения данных визита: дата, время, мастер, услуга, цена, скидки и многое другое. Пришлось написать отдельный парсер-хендлер, чтобы все это увязать и вместить в 60 символов. Сейчас максимальная длина строки не более 30 символов, резерв на будущее есть )
Третье. Телеграм имеет ограничение на рассылки. Нельзя отправить больше определенного кол-ва сообщений в секунду. Но тут пока ограниличись костылем, чтобы между отправкой сообщений клиентам и мастерам было хотя бы 10мсек. Этого хватает, когда сообщений будет много, что-нибудь обязательно придумаем.
Четвертое. Платежные системы не очень любят платежные формы с редиректами из Телеги, да и понятно, полно мошенников, но мы решили эту задачу разработкой личного кабинета как для мастера, так и для клиента, когда оба могут заходить на сайт с авторизацией из Телеграм и использовать весь функционал, включая оплаты. Так что если вдруг Телеграм снова заблокируют, сервис будет жить своей жизнью.
Результат.
Получился вот такой интересный проект - https://visittime.ru. На ваш суд, насколько он получился богатым в плане функционала, дизайн пока технический, без изысков. Но процесс разработки не прерывается и допиливаю много разных интересных фич: кросс-маркетинг по мастерам (обмен клиентами), листы ожидания и прочие вкусности, которые помогут мастерам решить проблему заполнения своих графиков.
Теперь каждый мастер может создать своего Телеграм бота, кинуть ссылку клиентам и в Телеграм бот будет осуществлять полный контроль за визитами.
Кину пару скринов, как выглядит интерфейс для клиента в Telegram. Он простой, но в нем все компактно.
Никакой рекламы в боте нет, каждый мастер контролирует своего бота и может мигрировать, например, в другой подобный сервис (наверняка, появятся конкуренты).
Спасибо за внимание
Если у вас есть вопросы - я с удовольствием отвечу. Для меня это первый пост в vc, не кидайте помидорами, если что-то получилось непонятно, постараюсь исправиться.