В связи с блокировкой Telegram в РФ актуальным стал вопрос “На какую платформу для чат-ботов делать ставку?” Исторически именно Telegram выступил драйвером революции чат-ботов в 2016-2017 годах из-за своей простоты для разработчиков и удобства приложения. С введением блокировки мы можем потерять одну из самых удобных платформ для организации работы чат-ботов.
В этой заметке я буду сравнивать популярные бот-платформы, на предмет того, где удобнее всего организовать уведомления и интерактивное взаимодействие для небольших любительских проектов. Целевая аудитория - я сам и пользователи, заинтересованные в конкретной функциональности бота и не ограничивающиеся одним мессенджером. Главный лейтмотив - простота. Чем меньше усилий уходит на организацию чат-бота, тем лучше.
Сразу уточню, что для коммерческих проектов ориентироваться нужно не на простоту реализации,а на совсем другие факторы: попурялность платформы у аудитории, возможности и зрелость API и т.д.
Что ищем
Spoiler: Да, все это есть в Telegram.
- Простое создание и администрирование бота. По возможности, создание отдельного специального аккаунта для бота/приложения в привязке к своему основному аккаунту.
- Простая авторизация, без OAuth. Да, OAuth - это распространенный стандарт, но каждый сервис делает его по своему и его реализация в приложении - отдельные затраты времени.
- Возможность использовать polling. В пет-проектах настройка webhooks добавляет существенно больше сложности там, где это совсем не требуется.
- Удобное клиентское приложение: распространённое, кроссплатформенное, с push-нотификациями, нетребовательное к ресурсам.
- Популярность платформы. Возможность подключения к боту других пользователей.
- Возможность создания интерактивных меню/кнопок в чате. Готовые ответы или команды существенно упрощают пользовательское взаимодействие.
Перед тем, как начать разбор кандидатов, отмечу те платформы, для которых сам ранее пробовал написать ботов: Facebook (неудачно), Twitter, Discord, IRC.
Официально WhatsApp не поддерживает ботов. Тем не менее, многие компании их используют, а на GitHub много библиотек под разные языки для самостоятельного создания ботов. Боты, де факто, выступают как неофициальные клиенты, то есть без специальных учетных записей.
Плюсы:
- Распространенность клиента
- Есть polling
- Авторизация через номер телефона и пароль
Минусы:
- Открытый API отсутствует, необходимо использовать какую-либо из библиотек для имитации клиента
- Самая популярная библиотека для Python после беглого изучения показалась достаточно сложной и контринтуитивной
- Риски блокировки аккаунта
- Отсутствие полноценной поддержки имен пользователей, вся идентификация реализуется через телефонные номера
Судя по интернетам, за рубежом именно Facebook (на пару со Slack) является драйвером бот-революции. Тем не менее, для непрофессионального разработчика API показалось очень неочевидным.
Плюсы:
- Распространенность клиента (хотя надо ставить именно Messenger)
- Много туториалов и инструкций
Минусы:
- Только webhooks, нет возможности подключиться через polling
- Не все, на первый взгляд, очевидные возможности доступны сразу. Для некоторых нужно получить одобрение со стороны модераторов платформы.
- Запутанная документация. Честно говоря, в свое время, так с ходу и не смог реализоватьдля Facebook что-либо работающее.
- Все минусы самого Facebook: вопросы конфиденциальности, использование батареи приложением и т.д.
ВКонтакте
Отечественный аналог Facebook с историческим родством с Telegram.
Плюсы:
- Есть polling, чуть более сложный, чем у Telegram, так как вместе с сообщениями выдается вся лента событий
- API в целом кажется достаточно простым
- Распространенность клиента
Минусы:
- Для бота нужно создание сообщества и OAuth
- Относительно небольшое количество туториалов
- Тяжелое приложение
Viber
Честно говоря, давно удалил Viber с телефона из-за неудобного приложения и обилия спама.
Плюсы:
- Простая авторизация без OAuth
- Относительная распространенность клиента
- Есть официальная библиотека для Python
Минусы:
- Нет Polling
- Качество клиента оставляет желать лучшего
- Много спама на платформе
Discord
Discord совершил небольшую революцию в мире гейминга в области голосового общения. Успешно отъедает доли у традиционных игроков, быстро развивается и добавляет новый функционал.
Плюсы:
- Есть polling
- Достаточно простой API
- Можно авторизовать приложение через логин/пароль вместо OAuth
Минусы:
- Приложение не очень распространено вне геймерской среды
- Веб-версия и нативное для Windows приложения довольно “тяжелые” (все прелести Electron)
Skype
Старичок рынка мессенджеров, сдает позиции в последнее время. История показывает, что, к сожалению, у Microsoft отсутствует целостное видение развития Skype.
Плюсы:
- Распространенность приложения
- Возможность обмена сообщениями со Skype for Business (бывший Lync)
Минусы:
- Нет polling
- Запутанная документация, наличие двух бот-платформ
- Авторизация по OAuth
- Мобильное приложение
- Для некоторых функций нужно одобрение бота в каталог и т.д.
- Риски платформы
В принципе, Direct Message в Twitter - это по сути тот же самый персональный чат.
Плюсы:
- Есть polling
- Достаточно простой API
- Распространенность приложения
Минусы:
- Получение ключей через OAuth
- Rate limiting при использовании polling не позволяет сделать real-time диалог
Slack
Несколько лет назад Slack изменил ландшафт корпоративных мессенджеров. Очень популярен среди разработчиков.
Плюсы:
- Есть polling (вроде бы)
- Популярность среди разработчиков, можно ожидать большое количество библиотек и плагинов
Минусы:
- Авторизация по OAuth
- Не самая очевидная система workspaces
- Возможные ограничения, связанные с платностью/бесплатностью аккаунта
IRC/XMPP
В отличие от других участников, это не конкретные платформы, а открытые технологии, которые позволяют реализовать полностью свой обмен сообщениями.
Плюсы:
- Старые проверенные и простые технологии
- Возможность использовать разные клиенты
Минусы:
- Нужно найти качественный мобильный клиент
- Вероятно, будет проблема с push-ами
- В случае с IRC нужно иметь сервер онлайн или пожертвовать приватностью
IFTTT
IFTTT - это облачный сервис для автоматизации. Среди прочего сервис предоставляет возможность настроить push-нотификации или уведомления через СМС.
Плюсы:
- В некоторых случаях можно полностью избежать программирования
- Простая настройка, ориентированная на обычных пользователей
Минусы:
- Ограниченный набор подключаемых сервисов
- Для всех автоматизаций необходимо настраивать отдельные пользовательские кейсы
Подводим итог
Удивительно, что наиболее популярные платформы в отличие от Telegram оказались явно не ориентированы на начинающих разработчиков. Причем, судя по статьям в интернете, я не один кто сталкивался с их избыточной сложностью.
Мой топ наиболее подходящих платформ для собственных проектов:
- Discord
Есть, что дополнить? С чем-то не согласны? Добро пожаловать в комментарии.