0,0
рейтинг
30 июля 2015 в 19:05

Разработка → Как я собрал скелет бота для заказа такси в Telegram из песочницы

В день запуска ботов в 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 и разобраться, как собрать других ботов.
Рогальский Анатолий @rogalskiy
карма
6,0
рейтинг 0,0
Блогер, гик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (27)

  • 0
    Попробовал уже кто? Преимущество этого метода еще и в том, что бота не надо нигде хостить и париться про высокие нагрузки — все в облаке.
  • 0
    Подскажите, кто знает, какие API систем для заказа такси есть в свободном доступе?
    Знаю что у UBER есть API, но оно не позволяет работать с заказами, там только функционал для работы с приглашениями в систему.
    • +1
      Насколько я знаю, в свободном доступе таких APIшек нет. Но по опыту, если обратиться в более менее крупную службу, у них API будет
    • 0
      • 0
        Отлично! Можете организовать себе дополнительный канал за пару минут, или Евгений это сделает))
        • 0
          Сделать просто, сложнее потом заставить пользователей пользоваться этим ботом ))
          • 0
            Ну, это уже маркетинг)
  • +4
    Я работаю в ПриватБанке и модерирую бизнес-логику Приват24 с помощью Corezoid. Я не разработчик и не имею ни малейшего представления о коде.

    Да ну? :-D
    • +1
      Вот так всегда.
    • 0
      Помню приват в твиттере постил что-то типа «наш новый Corezoid лишит работы тысячи кодеров». Неужто правда получилось?
      • 0
        Ну, могу сказать на примере Приват24. Раньше сервис поддерживало 34 разработчика. После перехода на Corezoid осталось всего 4 разработчика + 8 бизнес аналитиков
        • 0
          А остальные разработчики переключились на разработку Corezoid? :)
          • 0
            Не) Разработкой Corezoid занимаются отдельные инженеры. А разработчиков направили на вакантные места на других проектах, благо, в банке работы хватает)
            • +1
              То есть Приват24 уже не стоит приоритетом разработки? Вам бы нормального юзабилити дизайнера найти, интерфейс застрял в 2005 году
              • 0
                вполне себе интерфейс
        • 0
          Вопрос по Corezoid. Я что-то не увидел нигде расценок… плохо смотрел?
          P.S. Sorry, ошибся веткой
          • 0
            В самом низу на сайте corezoid.com написано. До 100 000 тактов в месяц — бесплатно. То есть зависит от размера процесса и нагрузки. Такт — переход из одного узла в другой. На этом примере переход из «new user» в «order» — это 1 такт.

            • 0
              Значит не заметил. Спасибо за информацию.
        • 0
          Все как всегда. Разработку сокращают, зато увеличивается количество маркетологов, аналитиков, продукт менеджеров и тд. Куда делось сакральное значение слова «инженер».
          • +1
            А инженеры как раз и создали Corezoid, чтоб «простые смертные» смогли делать часть рутинной работы за них
  • 0
    эм где поменять надпись:

    Заказ такси для городов:
    Киев, Москва, Воронеж

    Отправляйте коордианты «Откуда» и «Куда»:
    иконка «Отправить» -> «Location»

    /order — Заказать такси
    /cancel — Отменить заказ.
    • 0
      В главном узле «TaxiBot — MAIN», после проверки команды /start, процесс отправляет инфу про бота. Там и меняем)

      • 0
        отличн, нашел. пробую как клиент заказать, но все перестаёт работать на этапе координатов. Отсылаю координаты, а он пишет мол адрес не распознан.
        • 0
          Координаты надо передавать вот так

          Входящие параметры:

          location — объект, содержащий координаты, по которым нужно получить адрес: `{ «latitude»:«48.410530», «longitude»:«35.086102» }
          Тогда все работает.

          Проверь, у тебя так?
  • 0
    «Есть люди, которые легко могли бы программировать, но для которых это неприемлемо социально».

    В статье описывается разработка с помощью визуальных средств.
  • 0
    rogalskiy это же офигительно! Давайте еще шаблонов!
    • 0
      некоторые шаблоны доступны на сайте admin.corezoid.com/folder/conv/1833 и, конечно, в будующем буду собирать еще

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