Моя цель – не просто рассказать, как я собрал бота для вызова такси, а поделиться этим процессом с другими, чтобы то время, которое я потратил на реализацию алгоритма не тратили остальные. Вследствие этой работы любая служба такси, при наличии 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 и разобраться, как собрать других ботов.
Комментарии (27)
Bubniv
31.07.2015 00:15Подскажите, кто знает, какие API систем для заказа такси есть в свободном доступе?
Знаю что у UBER есть API, но оно не позволяет работать с заказами, там только функционал для работы с приглашениями в систему.rogalskiy Автор
31.07.2015 09:06+1Насколько я знаю, в свободном доступе таких APIшек нет. Но по опыту, если обратиться в более менее крупную службу, у них API будет
asurovtsev
31.07.2015 10:48У нас на Таксовике есть API для партнеров.
rogalskiy Автор
31.07.2015 10:53Отлично! Можете организовать себе дополнительный канал за пару минут, или Евгений это сделает))
asurovtsev
01.08.2015 14:56Сделать просто, сложнее потом заставить пользователей пользоваться этим ботом ))
malice
31.07.2015 02:38+4Я работаю в ПриватБанке и модерирую бизнес-логику Приват24 с помощью Corezoid. Я не разработчик и не имею ни малейшего представления о коде.
Да ну? :-Dvlreshet
31.07.2015 09:41Помню приват в твиттере постил что-то типа «наш новый Corezoid лишит работы тысячи кодеров». Неужто правда получилось?
rogalskiy Автор
31.07.2015 10:09Ну, могу сказать на примере Приват24. Раньше сервис поддерживало 34 разработчика. После перехода на Corezoid осталось всего 4 разработчика + 8 бизнес аналитиков
Magister7
31.07.2015 11:22А остальные разработчики переключились на разработку Corezoid? :)
rogalskiy Автор
31.07.2015 11:25Не) Разработкой Corezoid занимаются отдельные инженеры. А разработчиков направили на вакантные места на других проектах, благо, в банке работы хватает)
EvRiaL
02.08.2015 11:47+1То есть Приват24 уже не стоит приоритетом разработки? Вам бы нормального юзабилити дизайнера найти, интерфейс застрял в 2005 году
Magister7
31.07.2015 11:30Вопрос по Corezoid. Я что-то не увидел нигде расценок… плохо смотрел?
P.S. Sorry, ошибся веткойrogalskiy Автор
31.07.2015 11:41В самом низу на сайте corezoid.com написано. До 100 000 тактов в месяц — бесплатно. То есть зависит от размера процесса и нагрузки. Такт — переход из одного узла в другой. На этом примере переход из «new user» в «order» — это 1 такт.
SonkoDmitry
31.07.2015 16:54Все как всегда. Разработку сокращают, зато увеличивается количество маркетологов, аналитиков, продукт менеджеров и тд. Куда делось сакральное значение слова «инженер».
rogalskiy Автор
31.07.2015 17:59+1А инженеры как раз и создали Corezoid, чтоб «простые смертные» смогли делать часть рутинной работы за них
mention
02.08.2015 04:41эм где поменять надпись:
Заказ такси для городов:
Киев, Москва, Воронеж
Отправляйте коордианты «Откуда» и «Куда»:
иконка «Отправить» -> «Location»
/order — Заказать такси
/cancel — Отменить заказ.rogalskiy Автор
02.08.2015 09:27В главном узле «TaxiBot — MAIN», после проверки команды /start, процесс отправляет инфу про бота. Там и меняем)
mention
02.08.2015 14:37отличн, нашел. пробую как клиент заказать, но все перестаёт работать на этапе координатов. Отсылаю координаты, а он пишет мол адрес не распознан.
rogalskiy Автор
03.08.2015 15:07Координаты надо передавать вот так
Входящие параметры:
location — объект, содержащий координаты, по которым нужно получить адрес: `{ «latitude»:«48.410530», «longitude»:«35.086102» }
Тогда все работает.
Проверь, у тебя так?
vabue
03.08.2015 13:30«Есть люди, которые легко могли бы программировать, но для которых это неприемлемо социально».
В статье описывается разработка с помощью визуальных средств.
stasparshin
14.08.2015 18:26rogalskiy это же офигительно! Давайте еще шаблонов!
rogalskiy Автор
17.08.2015 09:37некоторые шаблоны доступны на сайте admin.corezoid.com/folder/conv/1833 и, конечно, в будующем буду собирать еще
rogalskiy Автор
Попробовал уже кто? Преимущество этого метода еще и в том, что бота не надо нигде хостить и париться про высокие нагрузки — все в облаке.