Как мы создавали Bot API ТамТам

Сегодня мы запускаем бета-тестирование Bot API ТамТам! Если вы разработчик, то уже сейчас сможете создать одного из первых ботов в ТамТам.

Как принять участие в бета-тестировании Bot API?

Мы запустили официальный канал про Bot API ТамТам. Там будут публиковаться все новости и change log, обязательно подпишитесь. Для участия в тестировании разработчикам нужно написать аккаунту @botapibeta, мы добавим вас в чат бета-тестировщиков и откроем доступ к @primebot.

Также вам понадобятся документация по Bot API и клиенты:

Общее описание Bot API

Java Client

OpenAPI JSON schema

Kotlin DSL client

В ближайшее время мы проведем конкурс на лучших ботов для ТамТам, следите за каналом 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.