company_banner

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

Привет! Меня зовут Нарек Маркосян и я backend-разработчик в компании «Ситимобил». Хочу рассказать вам о нашем закрытом Телеграм-боте «Тайный покупатель».

Пролог


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

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

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

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


Абсолютно все жалобы наших клиентов рассматриваются работниками отдела поддержки, но полностью полагаться на статистику, полученную от клиентов мы не можем по несколькольким причинам:

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

Так что же делать? Попросить наших коллег помочь!

  • Сотрудники вероятнее всего не забудут сообщить о проблеме;
  • Сотрудники более объективны. Не до конца, но все же :)
  • Можно подойти к коллеге и разузнать все нужные подробности.

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

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


image

Бот тайного покупателя очень прост. Он состоит всего из двух обработчиков:

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

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

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

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

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

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

Улучшения


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

Первая проблема — короткая память. В первой реализации бот начинал расспрашивать сотрудника через 5 минут после завершения поездки. Оказалось, что за это время пассажир успевал забыть некоторые подробности, например, регистрационный номер машины. После доработки бот начинал опрос через минуту после того, как пассажир сел в машину. Бот задавал вопросы, ответ на которые уже точно известен (чистота машины, правильные ли у машины номера и т.д.). После завершения поездки бот возвращался с еще одной пачкой вопросов, ответы на которые становятся ясны только по ходу поездки.

Вторая проблема — у нас почти всегда все хорошо. Как бы странно это ни звучало, но с точки зрения бота это стало проблемой. Наши коллеги устали после каждой поездки 10 раз отвечать «все хорошо». Мы решили эту проблему группировкой вопросов: объединили все вопросы, которые задавали во время поездки и все вопросы, которые задавали после, в два одинаковых вопроса: «Все хорошо?» с разным набором ответов.

image

В ближайшее время планируем увеличить количество доверенных клиентов и тем самым сделать бот более эффективным. Для этого нужно будет переделать авторизацию и добавить мониторинг на критичные события. Если будут интересные перемены, напишу о них отдельную статью…
Ситимобил
Компания

Комментарии 13

    +11
    При чем тут хабы php и MySQL? В «статье» нет ни строчки кода. С тем же успехом можно было и Go добавить, вы же его упомянули.

    Зачем опросник о поездке реализован через стороннюю службу обмена сообщений, а не интегрирован в приложение? Чтобы не получать оценки о поездке от тех, у кого телеграма нет? Да да же если есть, я бы посчитал такое входящее сообщение спамом и отправил в черный список.
      –5
      Бот пишет только тем кто сам захотел получать опросник. Без регистрации он никому не напишет.

      Функционал реализован с помощью телеграм бота что бы не нагружать приложение лишним кодом и сделать все на стороне бекенда, не тратя время мобильных разработчиков.
      +5
      Сколько же было негативных топиков в sys, когда коллеги из MRG пытались пользоваться Ситимобилом…
        –1
        что такое sys? Раз на раз не приходится. О плохом опыте все пишут, а о хорошем практически никто.
          +1
          Это внутренний корпоративный блог в компании Mail.Ru Group, в котором пишут о разном, в т.ч. о удачном/неудачном опыте использования собственных сервисов (Ситимобил частично принадлежит Mail.Ru Group, разработчики Ситимобил сидят в тех же башнях, что и остальные проекты MRG).
            –1
            И значит вы пишете в интранете о проблеме, но не лично сотрудникам из этого подразделения (кажется так оперативнее можно рассказать о проблеме и решить ее). Интересный подход публичной казни.
              +1
              Сотрудники этого подразделения, как и все остальные сотрудники, видят этот пост. Принимать ли какие-то меры сотрудники уж пусть решают сами.
                –1
                вместо работы сидеть и мониторить интранет :) интересненькоооо

                Ничего против не имею, просто интересен сам подход
                  +3
                  Авторы всех тех негативных постов, вероятнее всего их писали как раз с целью привлечь внимание коллег к каким-то проблемам. К тому же, я уверен, что они связывались и непосредственно с коллегами.

                  Я Ситимобилом никогда не пользовался и не собираюсь, хотя у меня есть коллеги разработчики оттуда. Описал просто факт наличия большого количества негативных постов в интранете.

                  UPD: К тому же, если ты выпускаешь продукт на рынок, все равно ведь есть человек, который отслеживает соцсети, фидбек. Почему он не может хотя бы раз в день утром, налив кофе из классного автомата и взяв с кухни печеньку, почитать отзывы в местном Интранете?
        +1
        И как попасть в этот бот?)
          –2
          Он пока закрытый, только для сотрудников Ситимобила.
          0

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


          А если серьёзно, то я не понимаю, чем вас не устраивает приложение: в нем решены проблемы с авторизацией, там может быть адекватная история поездок, а если клиент пришёл недовольный, то кажется более разумным спросить его, а не ожидать, что этот водитель попадётся сотруднику (ведь сотрудников настолько много, что водитель точно за это время не испортит настроение десяткам клиентов). Хотя, конечно, от того, что вы начнёте задавать вопросы клиентам, а не шлепать шаблонные ответы макросами, как это делает Яндекс, упадёт KPI поддержки, начальники точно будут недовольны.

            0
            Рейтинг и комментарии клиентов в приложении однозначно учитываются и проверяются отделом качества. Если водитель получил несколько плохих оценок то он может перестать видеть заказы а если рейтинг упадет ниже определенной отметки то он автоматически блокируется.
            Бот нужен больше для того чтоб напомнить человеку про то, что нужно дать обратную связь и показать список того на что нужно было обратить внимание. Бывает так что тебе что-то не нравится а по приезду ты сразу отвлекаешь на что-то и забываешь об этом написать. У меня такое часто бывало :)

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

          Самое читаемое