В этой статье хочу поделиться некоторыми тезисами на тему создания чат-ботов и разработки подобных решений. Я работаю Python Software Engineer в Grid Dynamics. На статью меня, в том числе, натолкнуло участие во внутреннем проекте, который за полгода вырос, по сути, до мини-отдела по разработке ботов. Цель данного материала — посмотреть на чат-боты под другим углом: не как на разработку, которую может реализовать даже новичок в программировании, а как на функциональное и коммерчески выгодное решение. 

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

Что такое чат-бот?

Для начала стоит понять одну фундаментальную вещь: чат-бот — это, прежде всего, приложение, которое ничем не уступает нативному приложению или сайту. В основе всех упомянутых выше решений обычно лежит пользовательский интерфейс (UI, Front-End) и какой-то набор действий со стороны сервера, который обрабатывает запросы пользователя (Server, Back-End), а также взаимодействует с базой данных и прочими сервисами, необходимыми для реализации требований к продукту. Это стандартная классификация, ничего другого современный интернет нам предложить не может.

По сути, чат-бот — это такой же продукт, как и сайт, но он имеет одну важную особенность: работа над пользовательским интерфейсом отдается в третьи руки. То есть мы реализовываем логику работы приложения, а отображение и взаимодействие проводим через интерфейс чата (естественно, в современном понимании это какой-либо мессенджер). На данном этапе стоит отбросить вопрос построения этого самого интерфейса в угоду удобности использования через третье приложение (пресловутый UX), а также сам процесс адаптации представления вашего приложения к интерфейсу и возможностям чат-приложения.

Какие особенности задач которые решает чат-бот?

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

  • зачастую минимальная возможность взаимодействия с файловой системой и операционной системой пользователя (в отличие от нативного приложения);

  • ограниченность интерфейса выбранным чат-приложением;

  • зависимость от работоспособности внешнего продукта (это очень актуально в последнее время);

  • максимально затрудненное автоматизированное тестирование.

Преимущества выбора чат-бота для реализации продукта

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

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

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

В чем сложности создания чат-ботов?

Основная сложность в создании приложения под мессенджеры — это конструирование удобного и функционального  интерфейса, исходя из того, какие особенности есть у нас в распоряжении внутри мессенджера. Соответственно, создавая определенные user-flow, мы имеем сложности, с которыми стоит смириться, а иногда, как в случае со Slack-ом, — огромные возможности, исходя из тех «блоков», которые нам позволено использовать.

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

Чат-боты в реальной жизни

Давайте попробуем понять, какое место уже сейчас занимают боты в нашей жизни. Конечно, первым делом стоит вспомнить ботов для криптовалюты и работы с ней, покупки авиа- и ж/д билетов. Так, можно найти много примеров с подобным  функционалом. Например, у государственной железнодорожной компании “Укрзалізниця” есть боты по продаже билетов в Telegram и Viber.

Большой сегмент ботов закрывает задачи взаимодействия внутри мессенджера. Это как официальные представительства и чаты для общения с известными людьми или компаниями, так и дополнительный функционал для модерации разнообразных чатов и сообществ. Следующей по списку можно выделить группу, в которой ботов можно охарактеризовать как помощников в повседневной деятельности пользователей. Это как боты для учета финансов, так и разного рода вспомогательные инструменты для мониторинга и управления различными ресурсами, не выходя из любимого мессенджера.

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

Стоит также упомянуть, что многие боты, которые сейчас можно найти в том же Telegram и которые имеют сравнительно большое количество пользователей, имеют дополнительный функционал, доступный за счет доната: как в форме подписки, так и единоразовым платежом. Такие боты зачастую коммерчески успешны, поскольку содержание сервера для работы бота стоит в разы меньше, чем сайта со схожей нагрузкой за счет распределения затребованных пользователем ресурсов, в том числе на сервера мессенджера.

Что делать с мыслью, что это баловство?

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

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


Напоследок важно не забывать, что разработка бота — это точно такой же процесс, как и разработка приложения. Не забывайте все основные и «золотые» правила, которые изучили за время работы в вашей сфере и с любимым языком. На данный момент все самые популярные языки программирования имеют в арсенале библиотек с открытым исходным кодом уйму готовых решений и фреймворков для построения ботов практически для любой платформы. Python и JavaScript — фавориты в этом деле. В конечном счете, почитав документацию, вы сможете реализовать такую библиотеку самостоятельно, если популярной готовой найти не удалось, ведь основной способ взаимодействия между серверами мессенджера и вашим приложением — это все еще HTTP/Socket запросы.

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

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


  1. VolodjaT
    02.02.2022 19:16
    +19

    Чат боты это мерзость


    1. dmytrohoi Автор
      02.02.2022 19:44

      Это чем-то аргументировано или предубеждение?


      1. VolodjaT
        02.02.2022 21:34
        +2

        Дайте мне весь фунционал - я решу что делать. Не хочу догадываться как общаться с ботом.


        1. dmytrohoi Автор
          02.02.2022 21:35
          -3

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


          1. VolodjaT
            02.02.2022 22:52
            +2

            Я с точки зрения пользователя имею ввиду.


            1. dmytrohoi Автор
              02.02.2022 23:33

              Так речь и не шла исключительно о ботах которые реагируют на текст. Откройте бота в телеграм и увидите полноценное меню с кнопками и командами.


  1. AjnaGame
    02.02.2022 19:26
    +21

    Чат боты еще ниразу не решили мои проблемы и вызывают только негативные эмоции(


    1. dmytrohoi Автор
      02.02.2022 19:31

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

      Из позитивных кейсов могу выделить ботов в Телеграмме для мониторинга и фильтрации чатов. Многие распространенные решения имею ещё и веб-интерфейс позволяющий решать более сложные задачи чем текстово-картиночные ответы самого бота. Хотя и они часто умеют выдавать удобную аналитику.

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


    1. dmytrohoi Автор
      03.02.2022 00:35

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


      1. AjnaGame
        03.02.2022 12:30

        Для решения моих проблем, да. А всё другое я делаю в специализированных аппках или сайтах.


  1. MentalBlood
    02.02.2022 19:32
    +8

    Основное преимущество чат-бота в том, что пользователь находится в знакомом и понятном для него интерфейсе

    Интерфейсе к чему? В чатах люди обычно общаются с людьми, которые гораздо гибче и понимают их неимоверно лучше чем чат-боты. С программами, напротив, удобней взаимодействовать через кнопки/списки/переключатели и т.п.


    Т.е. если учитывать конечную цель пользователя, то классические интерфейсы гораздо успешней в ее достижении


    1. dmytrohoi Автор
      02.02.2022 19:40

      На данный момент большинство мессенджеров, разного уровня и направления, имеют кроме обычного способа общения и много других точек взаимодействия с пользователями. Могу перечислить навскидку: Telegram - кнопки под постами, клавиатура вместо обычной в виде кнопок, ответы на опросники, инлайн команды (меню и всплывающее когда тегаешь бота) и просто команды как сообщение начинающееся со слеша (/); Discord - сообщения, передвижения по комнатам, разделение по ролям и прочее, реакции на посты, команды и т.д.


  1. anlar
    02.02.2022 19:41
    +3

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

    Не очень понятно, почему мне надо решать задачи именно через мессенджер.


    В основном пересекаюсь с ботами в чатах поддержки разных компаний, и всегда диалог начинается с фраз типа "мне нужен живой человек". Если уж я дошёл до чата, значит ни стандартные действия в приложении не сработали, ни в местном FAQ я не нашёл ответа на свой вопрос.


    1. dmytrohoi Автор
      02.02.2022 19:43
      -1

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


  1. segment
    02.02.2022 22:13
    +2

    Не понимаю в чем преимущество чат бота перед классическим интерфейсом с элементами управления. В большинстве случаев нужен живой оператор. Боту еще нужно как-то правильно набрать запрос, иначе выдаст мусор.


    1. dmytrohoi Автор
      02.02.2022 23:36

      Речь идёт не только о ботах которые пытаются распознать текст, это вообще "отдельная каста" ботов, хэх, которые в большинстве случаев бесполезны. Хотелось донести мысль что можно и нужно автоматизировать рутинные задачи с помощью функционала мессенджеров и что это не есть плохо когда на каждый чих создают не сайт, а бот в любимом мессенджере.

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


    1. NemoVors
      03.02.2022 10:45
      +1

      Преимущества чат-бота перед классическим интерфейсом одно: можно легко за сложными формулировками и "сформулируйте запрос иначе" спрятать различные штуки, которые раньше писали мелким шрифтом. И если от вас хотят скрыть какую-то информацию (чтобы вытянуть из вас побольше денег за услугу, например) - то это отличный метод.

      p.s. это все мое ИМХО, конечно.


  1. GospodinKolhoznik
    02.02.2022 22:16
    +6

    Стандартное поведение чат бота:

    - Здравствуйте! Пожалуйста сформулируйте свой вопрос.

    - У меня не работает XYZ.

    - Вы можете настроить работу XYZ в личном кабинете, в разделе XYZ. Я могу чем-ни будь ещё вам помочь?

    - Соедините с оператором.

    - Задайте вопрос, чтобы я мог определить с каким специалистом вас связать.

    - У меня в личном кабинете не активен раздел XYZ.

    - Вы можете настроить работу XYZ в личном кабинете, в разделе XYZ. Я могу чем-ни будь ещё вам помочь?


    1. dmytrohoi Автор
      02.02.2022 23:37
      -1

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


  1. Nacreous1991
    02.02.2022 23:28
    +1

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


    1. dmytrohoi Автор
      02.02.2022 23:39
      +1

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


  1. garbagecollected
    03.02.2022 02:58
    +7

    Хотите, я вам посоветую чат бота? - Откройте терминал.

    Если вы любите общаться с ботами с мобильного телефона - вам поможет Termux, под iOS их еще больше: termius, blink, iTerminal.

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

    Если вам необходимо взаимодействие с ФС, попробуйте шорткод mc.

    А если вам надо что-то автоматизировать, вы можете запустить режим vim или mcedit. И набираете последовательность диалога ваших бесед с ботами, сохраняя в файл с расширением .sh.

    Когда ответ чат-бота не влезает на экран, вы можете процитировать последнюю фразу добавив | less или | more в конце обращения и ответ бота будет разделён на страницы.

    Интерфейсы сложных режимов чат-ботов проецируются прямо на экране истории переписки. Практически неограниченные возможности.

    Настоящий диалог с компьютером. Правда, язык bash немногословен. Но вы найдете там много интересного для себя.


    1. dmytrohoi Автор
      03.02.2022 03:15
      +1

      Без сомнения, я максимально согласен с вами. В тот момент когда пользовался Android'ом я часто прибегал к такому решению, сейчас на iOS преимущественно использую Shortcuts (они подойдут для всего, в том числе и используя упомянутый шорткат).

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

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


      1. garbagecollected
        03.02.2022 05:43
        +2

        Вы делаете очень серьёзную ошибку.

        Не стоит учить пользователя. Даже не надо пытаться объяснять пользователю, как ему удобнее. Никогда не надо думать, что вы умнее пользователя. Это очень важно. И даже ваши домашние вас будут игнорировать и делать по-своему.

        Это природа человека. Люди ходят учиться в школу и в университет. А всё остальное время люди получают опыт. Если человек открыт для информации от вас, то он сам спросит нужную информацию. А когда вы пытаетесь дать человеку бесплатные советы, он раздражается и хочет заехать.

        Это же касается всех ваших решений. Никогда не думайте как будет лучше другим, вы все равно этого не знаете наверняка. Делайте так, чтобы пользовались именно вы. И изначально расчитывайте, что этим пользоваться будете только вы. А думать за других - это очень неблагодарное дело. Кто-то пользуется "Телеграм", кто-то пользуется "Mail.ru-агентом", а кто-то чатится используя "Outlook Express".


        1. dmytrohoi Автор
          03.02.2022 05:52

          Продолжаю соглашаться потому что придерживаюсь такого же мнения.

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

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


          1. garbagecollected
            03.02.2022 20:44

            Я имею в виду, что люди используют компьютеры для решения задач как умеют, не ради того чтобы наслаждаться процессом (не ради того чтобы сидеть за компьютером или смартфоном), а всего лишь ради достижения цели. Вот вам удобнее делать это из мессенжеров. Но большинство людей не пользуются мессенжерами вообще. И их значимость в процессе управления очень завышена.

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

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


  1. AntonMikhno
    03.02.2022 03:15
    +1

    О, это уже первые шаги к chatOps


    1. dmytrohoi Автор
      03.02.2022 03:18

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


      1. IllNord
        03.02.2022 15:04

        Признаться, первая же проблема "не очень быстро приживается" - в подаче информации. Будь в "что такое чат-бот" скрин бота с кнопками и управлением - сразу бы отпали вопросы о ботах, которые действуют через распознавание текста.


        1. dmytrohoi Автор
          03.02.2022 15:07

          Да, была идея продолжить далее эту тему уже с примерами.

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


  1. Aregreste
    03.02.2022 20:07
    +1

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

    Но есть один бот, который хотя бы в теории полезен.

    Обычный бот для просмотра прогнозов погоды.

    Но создатели этого бота похоже что неправильно понимают в каких условиях люди будут им пользоваться и в итоге неправильно его сделали. Если у меня нормальный интернет, то зачем мне бот, если я могу зайти на любой сайт? Если у меня плохой интернет, то зачем мне нужна картинка, где красочно показана температура, облачность и вероятность дождя, когда мне это 100 кб изображение бьет в живот и было бы намного проще и быстрее получить табличку в ответном сообщении со всеми нужными данными, а не мучаться с загрузкой через плохой EDGE картинки, которую с первого раза может и не получиться прогрузить.

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


  1. Sciti
    04.02.2022 06:58

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

    Обычно при общении с поддержкой банков и прочих организаций, стараюсь максимально сильно выжать бота, где то даже попытаться сломать, но операторы всегда перехватывает :( Мне нужно лечение да?