Pull to refresh

Как я собрал скелет бота для заказа такси в Telegram

Reading time4 min
Views76K
В день запуска ботов в Telegram я за 3 часа собрал бота, который присылает температуру воздуха в ответ на геолокацию пользователя. С того же дня я бредил вызовом такси через бота в Telegram, так как API службы такси у меня был под рукой.

Моя цель – не просто рассказать, как я собрал бота для вызова такси, а поделиться этим процессом с другими, чтобы то время, которое я потратил на реализацию алгоритма не тратили остальные. Вследствие этой работы любая служба такси, при наличии API, может за 5 минут настроить шаблон этого бота под себя. Или владелец бота с большим количеством пользователей сможет быстро подключать к себе службу такси.

Проектирование и реализация

Первое, что я сделал – нарисовал на бумаге простой автомат по вызову такси и состоянию заказа. Я хотел сделать просто и быстро, чтобы понять, сколько ресурсов уйдет на такую задачу с нуля. Так как у меня был доступ к API службы такси, нужно было реализовать только логику.

В своем процессе я зафиксировал минимальную функциональность – заказ на сейчас и оплата наличными. Функционально бот умеет получать только геолокацию без распознавания текстовых адресов. Такую минимальную функциональность с проектированием, реализацией и тестированием я собрал за 8 часов.



Позже, на этапе получения адреса от пользователя, я добавил и распознавание текста через Yandex Speech API, чтобы можно было отправить название объекта или адрес вместо геолокации. Но так как используемый мной API заказа такси работает в своем специфическом формате получения адреса, эта функция не добавлена в сборку.

Следующим шагом я перенес с бумаги описанный процесс и логику в админу облачной ОС Corezoid и подключил к процессу собственно API Telegram. Уже на этом этапе можно было протестировать получение сообщений из Telegram в процесс. Следующим шагом я, в таком же порядке, создал процесс заказа такси.

Вот так выглядел автомат, описывающий состояния пользователей бота Telegram, в черновике и каким он стал в Corezoid.



После создания скелета процесса заказа такси я создал отдельные процессы: отправка сообщения в Telegram, обработка геолокации и работа с API службы такси. 5 минут ушло на их тестирование и исправление ошибок. Затем перешел к созданию дашборда.

Реалтайм дашборд и анализ

Основным элементом в Corezoid является функция Callback, в терминах Telegram это называется Webhook. Эта функция позволяет процессу ждать реакцию пользователя. Реакций в этом конкретном процессе может быть несколько: отправка пользователем геолокации или отмена заказа (при бездействии или по команде /cancel). В дальнейшем функцию Callback система использует для мониторинга количества шагов пользователей в режиме реального времени. Это позволяет визуализировать воронку прохождения клиентами процесса заказа такси. За счет обработки каждого шага можно анализировать, на каком процессе клиент отвалился, и модерировать процесс.



Так как Corezoid автоматически собирает статистику по каждому состоянию процесса, вы можете зайти и посмотреть детальную статистику каждого состояния пользователя и заказа.



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




Можете найти в Telegram контакт @utaxibot и зайти в этот дашборд. Когда вы в боте введете команду /order, то увидите, как работает реалтайм дашборд.

Как использовать шаблон

Я отвязал бота от существующего API службы такси. Так что вы можете скопировать себе папку с шаблоном и подключить локальный сервис заказа такси через API. Просто введите ключ своего бота Telegram с одной стороны и API службы такси с другой.

Шаг 1. Логинимся в 2 клика на сorezoid.com

Шаг 2. Копируем папку с процессом.



Шаг 3. Регистрируем своего Telegram-бота в чате @BotFather и привязываем его ключ к процессу в Corezoid.



Шаг 4. Подключаем API службы такси согласно документации.
Требования к API заказа такси писали исходя из того API, что использовал я. Но Corezoid всё равно, какой API вы используете, можно самостоятельно прописать маппинг входящих и исходящих данных, так что у вас могут быть любые свои параметры.

Я предлагаю не просто использовать Сorezoid как конструктор для создания процессов, а использовать готовый шаблонный процесс.

И самое главное – Сorezoid может работать с любым фронтендом, который поддерживает режим работы через webhook/callback. Так что этот процесс будет работать и с другими системами взаимодействия с клиентом (Slack, Telegram, SiteHeart, SMS и др.). Вы можете подключить хоть Twitter Direct Message API, и этот же процесс будет работать через Twitter.

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

Приквел

Я работаю в ПриватБанке и модерирую бизнес-логику Приват24 с помощью Corezoid. Я не разработчик и не имею ни малейшего представления о коде.

Изначально Corezoid разрабатывалась как система исключительно для решения рабочих вопросов банка – управления эскалациями. В процессе эксплуатации она трансформировалась в систему управления состояниями объектов и процессами, а потом стало ясно, что Corezoid отлично подходит на роль бекэнда для фронт-офисных систем, в том числе для мессенджеров.

Платформ для создания бекэнда не так много. Недавно на Хабре я наткнулся на эту статью, где ребята хорошо начали разговор о конструкторах для Telegram-ботов. Сегодня я продолжил этот разговор и показал гибкую платформу с дашбордами «из коробки». Энтузиасты теперь смогут вызывать себе такси прямо в Telegram.

Кликайте сюда, если хотите использовать мой шаблон. Или сюда, если хотите ознакомиться с документацией Corezoid и разобраться, как собрать других ботов.
Tags:
Hubs:
Total votes 25: ↑19 and ↓6+13
Comments27

Articles