Как мы создавали Bot API ТамТам
Сегодня мы запускаем бета-тестирование Bot API ТамТам! Если вы разработчик, то уже сейчас сможете создать одного из первых ботов в ТамТам.
Как принять участие в бета-тестировании Bot API?
Мы запустили официальный канал про Bot API ТамТам. Там будут публиковаться все новости и change log, обязательно подпишитесь. Для участия в тестировании разработчикам нужно написать аккаунту @botapibeta, мы добавим вас в чат бета-тестировщиков и откроем доступ к @primebot.
Также вам понадобятся документация по Bot API и клиенты:
В ближайшее время мы проведем конкурс на лучших ботов для ТамТам, следите за каналом Bot API.
А еще по поводу долгожданного запуска наш ведущий iOS разработчик Юрий Буянов рассказывает в формате интервью, как мы создавали Bot API ТамТам.
- Как давно были изобретены боты?
Чат-боты оказались на волне популярности в последние года три. Но те разработчики, которые уже закончили школу, наверняка знали о них и раньше. Я, например, еще в середине девяностых общался с Eggdrop в IRC-каналах, а в двухтысячных писал бота для Skype. Если отвлечься от мессенджеров и углубиться в вопрос диалоговых интерфейсов, которые позволяют общаться с ЭВМ как с живым собеседником, можно вспомнить и ELIZA (1966), и Тьюринга с его тестом (1950, “Computing Machinery and Intelligence”), который подразумевал переписку с искусственным интеллектом.
- У ТамТам сразу был Bot API?
Запросы на доступ к API мессенджера для создания ботов мы стали получать даже раньше, чем вышел первый публичный релиз ТамТам. Команда использовала ТамТам для коммуникации между собой и другими командами разработчиков, как только стали доступны альфа-версии первых клиентов. Возникло желание интегрировать внутреннюю инфраструктуру (таск-трекер, CI-сервера, мониторинг) в новый мессенджер. Несмотря на то, что как разработчики мы имели полный доступ к документации по бинарному (а с началом разработки веб-клиента и вебсокет-) протоколу, который используется мессенджером, писать на нём ботов было неудобно. Мало кто готов инвестировать время и силы на работу с MessagePack и аккуратную работу с TCP-сокетами для того, чтобы написать бота, который будет уведомлять участников рабочего чата о новых сборках или ошибках.
Был нужен специальный упрощенный API, как и у всех современных мессенджеров. Чем понятней будет API и ниже порог входа в разработку ботов, тем больше их будет написано и тем больше полезных возможностей получит ТамТам.
- Как разрабатывался Bot API ТамТам?
ТамТам был необходим специальный упрощенный API (REST). Обычному разработчику бота не нужна и половина тех возможностей, которые заложены во внутреннем протоколе. Более того, упростив доступ к синхронизации контактов или процессу регистрации, мы облегчили бы работу спамерам и мошенникам. Но и дать доступ через REST к набору методов API — лишь малая часть работы, которую нужно было сделать для запуска продукта “Bot API” для внешних разработчиков.
Разработчикам нужен интерфейс для создания ботов и дальнейшего управления ими. Выписывать токены для работы с API от имени самого разработчика — не самая лучшая идея (мало какой разработчик захочет наблюдать у себя в списке чатов всю переписку бота с пользователями), а регистрировать полноценного пользователя с аутентификацией по уникальному номеру телефона — слишком сложно. Доверить управление ботами мы решили одному из них — @primebot. Он умеет заводить новых ботов, менять данные их профиля, добавлять подписки на вебхуки и так далее.
Чтобы не путать пользователей, хорошо бы явно обозначить ботов на клиенте и поддержать популярные UX-паттерны для работы с ними. Например, автодополнение и подсветку команд, а также сообщения с кнопками.
Разработка удобного и простого API, а также его документирование — это отдельная большая задача, которая требовала ресурсов и времени.
- Расскажи про внутреннее тестирование Bot API
Любая новая функция перед выходом в релиз проверяется тестировщиками и рядовыми коллегами на корректность и удобство использования. Довольно часто по итогам внутреннего тестирования уже законченную функцию приходится полностью перерабатывать. Протестировать формальное соответствие Bot API документации несложно, но как протестировать удобство его использования?
Особенность была в том, что пользователями API являлись сами разработчики, а одна “сессия” его использования — не несколько нажатий на кнопки и отправленных сообщений, а часы, а то и дни разработки определенного бота. Стало ясно, что пора отвлечь разработчиков от текущих задач и устроить хакатон.
Для написания ботов обычно нужен опыт разработки серверных приложений, но в хакатоне приняли участие и разработчики мобильных клиентов, и фронтендеры и тестировщики. Каждый выбрал для себя подходящий стек разработки и идею для бота. Жестких правил не было: кто-то объединялся в команды, кто-то, наоборот, делал пару разных ботов вместо одного.
На разработку ботов отвели два дня, с расчётом на то, что многим разработчикам нужно разобраться с новым для себя стеком, а за первыми попытками использовать Bot API наверняка последует множество его доработок. Так и получилось: iOS-разаботчики, привыкшие к Obj-C, вспоминали Swift и копались в документации к Vapor, тестировщики и фрондендеры углубились в node.js, Android-команда осваивалась с Kotlin.
До финала хакатона добрались 11 ботов, на финальном голосовании команда хакатона определила 5 победителей:
- Бот для голосований (с помощью него проводили финальное голосование)
- Бот, играющий в шахматы
- Бот для заказа обедов в наш офис
- Бот для скачивания видео
- Шуточный бот для генерации отмазок ;)
Коллег-победителей мы наградили призами.
В день запуска публичного бета-тестирования желаем всем удачи в разработке ботов! Ваши отзывы пишите @botapibeta и на team@tamtam.chat.