Как автоматизировать процессы с помощью low code конструкторов: пример платных парковок +3


AliExpress RU&CIS

Давно хотел погрузиться в нишу No code или Zero code. И вот наконец появилась задачка, которую решил собрать на конструкторах.

Дано


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

Ребята хотели помочь людям быстро оплачивать парковочное место, а также стимулировать их пользоваться парковкой как отдельным продуктом (то есть просто оставлять автомобиль на этой парковке и идти по своим делам, а не в сам гипермаркет).

Как было раньше?


Пользователь приезжает на парковку, получает парковочную карту, идет за покупками. Если он успел решить свои дела до окончания срока бесплатной парковки, то он оставляет в терминале парковочную карту, подъезжает к шлагбауму и уезжает. Если же лимит превышен и парковку нужно оплатить, то часто пользователь спохватывается уже около шлагбаума. Это значит, что ему нужно развернуться, подойти к терминалу, оплатить и только потом вернуться и выехать. Все это время остальные водители его ненавидят.

Что нужно было сделать?


На парковочной карте появляется QR-код. Сканируя его, пользователь попадает в браузерное окно, где с ним будет разговаривать бот в разных браузерах. Он проинформирует, нужно ли оплатить парковку, примет платеж и «выпустит» пользователя с парковки. К терминалу ехать больше не нужно. Кроме того, задачей бота было делать из разовых посетителей постоянных. В диалоге он сразу говорит пользователю: „Знаешь, ты мог бы оставлять у нас авто всегда… давай это сделаем!“ — и так в моменте продает парковку.

Для решения задачи нам нужно было интегрировать 4 системы


Парковочные терминалы r-p-s.ru — которые уже стояли у клиента.

CRM клиента — bitrix24.ru — которая уже была настроена.

Интерфейс для взаимодействия с пользователем. Тут мы выбрали Borisbot потому, что
есть браузерная версия и версия в мессенджерах. + удобные форма работы с переменными.
Система платежей — для реккурентов cloudpayments — лучшие.

Архитектура бота состояла из блоков, которые можно создавать в web-интерфейсе. Нужно было научить бота отправлять и принимать переменные с внешних сервисов и иметь возможность использовать их в диалоге. Сейчас я покажу, что в итоге получилось „под капотом“.

Шаг 1


Сначала нужно было понять, как получать данные парковочной карты по QR-коду, который на ней размещен. Когда клиент сканирует QR-код, бот знакомится с ним и просит ввести номер карты. Далее бот отправляет запрос во внешнюю парковочную систему (ту, которая открывает и закрывает шлагбаум) и спрашивает, был ли этот клиент здесь раньше. В конструкторе это делается через блок HHTP запрос.

image

Шаг 2


Мы пришли прикольную возможность создавать переменные на каждый блок в конструкторе.

Передавать переменные на внешние сервисы и получать ответы можно с помощью блока „HTTP-запрос»: %answer_XX%, где xx — номер блока. Каждый ответ проверяется через true/false, от него можно продолжить разные ветки скрипта. Например, если мы получаем ответ success и это = true, то идет маршрут вправо. А если использовать переменные в открытом тексте, то они заменяются на значения.

image

Шаг 3


Затем нам нужно было подтягивать данные клиента из парковочной системы и маршрутизировать варианты:

  • если платежная карта клиента имеет положительный баланс, то предлагать подписаться на тариф (то есть оставлять авто время от времени, оплачивая услуги парковки по абонементу)
  • если клиент соглашается, то помогать с выбором тарифа и подписывать на рекуррентные платежи (абонемент)
  • если платежная карта клиента с отрицательные балансом, то пополнять баланс на недостающую сумму

Для этого пригодился блок “Маршрутизатор”, который помогает определить значение переменных и маршрутизировать цепочку диалогов в зависимости от ответа HHTP-запроса. Так мы выясняем, пользуется ли клиент каким-либо тарифом, и бот предлагает его открыть или продлить.

image

Шаг 4


Далее нужно было использовать в коммуникации с пользователем переменные из внешний систем. Данные, которые приходят из внешней системы, мы можем выводить в боте с помощью блока “HHTP-запрос” и использованию переменных с автозаменой. Например, это может быть номер карты, имя клиента, его номер телефона, название тарифа и так далее. Вот посмотрите как это работает в конструкторе.

image

Тут %answer_4% — автозаменяется на ответ из Блока 4
%response_5_client.email% — автозаменяется на HHTP-ответ в блоке 5 с полем client.email.

Шаг 5


Далее нам нужно было создать возможность привязки к кнопке конкретного продукта (простой разовой оплаты парковки или подписки, где можно применять рекуррентные платежи) Это позволяет добавлять продукты с кнопками к любым других блокам один или несколько раз. Выбранный продукт автоматически добавляется в корзину.

image

Шаг 6


Последняя часть — это блок 20, где происходит оплата и выбирается заранее настроенная платежная система.

Ответы можно маршрутизировать. В данном кейсе в случае успешной оплаты HHTP-запрос вносит изменение во внешнюю парковочную систему — простыми словами, в случае успешной оплаты открывается шлагбаум. В случае ошибки мы отправляем пользователю в диалог сообщение об ошибке.

image

Посмотреть, что получилось, можно тут

Конечно, в готовых конструкторах есть ограничение по нагрузкам, но зато вы получаете преимущество в скорости разработки и можете на конструкторах решать по настоящему сложные решения. Погружение и реализация заняла несколько недель, но это точно быстрее и дешевле чем писать все с нуля. Тут достаточно понимать как работают переменные и API запросы, а дальше уже можно создавать любые сложные решения в удобных конструкторах.




Комментарии (3):

  1. mclander
    /#22337534

    Не уверен, что хочу незнакомому боту сообщать номер кредитки. Тем более, если планирую просто забрать на парковке жену.

    • Nikolopulus
      /#22340780

      Вы не боту кредитку оставляете оставляется а платежной системе, бота данные кредитки не хранит.