Тайный Покупатель «Ситимобила»

Привет! Меня зовут Нарек Маркосян, я бэкенд-разработчик в Ситимобиле.

Я хочу рассказать вам о нашем закрытом Telegram-бот «Тайный покупатель» .



Пролог

В Ситимобиле никто не носит розовые очки, мы прекрасно понимаем, что наш сервис не идеален, поэтому всегда работаем над его улучшением.

Проблемы клиента могут быть связаны с заявкой, с расчетом цены, но чаще всего — с водителем.

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

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



Зачем нам понадобился бот?

Абсолютно все жалобы наших клиентов рассматриваются сотрудниками нашей службы поддержки, однако мы не можем полностью полагаться на полученную от клиентов статистику по нескольким причинам:
  • не все клиенты оставлять отзыв, если что-то пошло не так;
  • мы не всегда можем быть уверены объективность клиенты;
  • мы не хотим и не можем массово приставать к клиентам уточняющие вопросы чтобы получить полную картину.

Так что делать? Попросите наших коллег помочь!
  • Сотрудники, скорее всего не забуду сообщить о проблеме;
  • Сотрудники подробнее цель .

    Не полностью, но всё же :)

  • Вы можете подойти к коллеге и узнать все необходимые детали.

Конечно, если возникнут проблемы, вы всегда можете позвонить в диспетчерскую и избежать посредников, но бот помогает вам выполнить две важные задачи: напоминает , на что следует обратить внимание, и позволяет сообщить о проблеме, нажав одна кнопка .



Как работает бот



Тайный покупатель «Ситимобила»

Бот тайного покупателя очень прост. Он состоит всего из двух обработчиков: Первый обработчик извлекает из нашего API поездки, которые недавно завершились или находятся в статусе «В пути», и отправляет первый вопрос о поездке в чат. Второй обработчик обращается к Telegram API и собирает непрочитанные сообщения, по очереди просматривает каждое сообщение и отправляет ответ в чат. Конечно, можно было сделать так, чтобы наш сервер автоматически отправлял сообщения трип-боту и ответы пользователей из Telegram приходили не пачками, а в момент отправки, но после обсуждений мы решили сделать именно описанный выше механизм.

На это было несколько причин:

  • при такой реализации сервис полностью закрыт для входящих запросов на все порты, благодаря чему мы можем не опасаться попыток взлома или DDOS-атак;
  • если одновременно поступает много сообщений от пользователей, Telegram не будет будет забрасывать нас просьбами ;
  • если бот поглупеет, это не будет иметь никакого эффекта на наш основной сервер и не повлияет на бизнес-процессы.

В качестве базы для бота мы выбрали MySQL. Нам бы подошла любая база данных, даже без SQL, но мы выбрали MySQL, чтобы отделу аналитики было удобнее обрабатывать необходимые данные.

Что касается языка, то здесь мы выбирали между PHP и GoLang. Мы остановились на PHP, потому что «почему бы и нетЭ» С той реализацией, которую мы имеем, мы не воспользуемся основными преимуществами Go, но усложним дальнейшую разработку — не все наши разработчики пишут на Go. Если у вас есть идеи, почему Go будет лучше PHP в этой реализации, буду рад прочитать их в комментариях.



Улучшения

Со времени первой версии улучшений не было.

После официального запуска мы начали собирать отзывы и в результате обнаружили только две проблемы.

Первая проблема – короткая память .

В первой реализации бот начинал допрашивать сотрудника через 5 минут после окончания поездки.

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

После модификации бот начал опрос через минуту после того, как пассажир сел в машину.

Бот задавал вопросы, на которые уже был известен ответ (чиста ли машина, правильные ли у машины номера и т. д.).

После завершения поездки бот вернулся с очередной кучей вопросов, ответы на которые стали понятны только по ходу поездки.

Вторая проблема в том, что у нас почти всегда всё хорошо.

.

Как бы странно это ни звучало, но с точки зрения бота это стало проблемой.

Наши коллеги устали после каждой поездки по 10 раз отвечать «все хорошо».

Мы решили эту проблему, сгруппировав вопросы: объединили все вопросы, которые были заданы во время поездки, и все вопросы, которые были заданы после, в два одинаковых вопроса: «Все ли в порядкеЭ» с другим набором ответов.



Тайный покупатель «Ситимобила»

В ближайшем будущем мы планируем увеличить количество доверенных клиентов и тем самым сделать работу бота более эффективной.

Для этого потребуется переделать авторизацию и добавить мониторинг критических событий.

Если будут интересные изменения, о них напишу отдельную статью.

Теги: #php #Telegram #бот #MySQL

Вместе с данным постом часто просматривают: