getNotifiedBot — Telegram-бот для получения оповещений о коммерчески важных событиях и ошибках в вашем приложении

Проблематика

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

  • Почему пользователь уйдет в одном шаге от покупки.
  • Какие и в каких ситуациях возникают ошибки.
  • Где пользователь ведет себя не так, как ожидается.
  • Выполнение какого кода должно сигнализировать об атаке.
  • Что произойдет если упадет один из необходимых API или рестартнется сервер.

Забавно, но эта проблематика становится тем насущней, чем дальше человек от работы с кодом: тим-лиды, QA, PM, CTO, CEO, собственники, инвесторы — всех их эти вопросы волнуют гораздо больше, чем программиста, непосредственно пишущего код. Самого программиста эти вопросы начинают волновать только тогда, когда он начинает пилить собственный продукт, от которого зависит его завтрашний хлеб.

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

Начнем с коммерчески важных событий

Этот бот появился как сайд-проект нашего основного сервиса ActualizeBot, и вот какие коммерчески важные оповещения мы получаем в нем уже сегодня:

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

Эта информация в прямом эфире, во-первых, добавляет позитивного настроя и понимания того, что в продукте что-то происходит и мы тут все работаем не просто так. Что называется, эффект присутствия.

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

Ошибки

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

Хорошей иллюстрацией такой ошибки был баг на форуме Searchengines, не позволявший зарегистрироваться, — новому пользователю просто не приходили письма с подтверждением. Другая иллюстрация — то, сколько денег сейчас теряет Facebook из-за некорректной и ужасающе неинтуитивной рекламной панели.

В поиске таких слабых мест нам отчасти помогают:

  • Тестировщики, глаз которых рано или поздно замыливается.
  • Автотесты (мифические сущности из объявлений о вакансиях), которых надо написать очень много и регулярно вдумчиво переписывать.
  • Пользователи, столкнувшиеся с ними и не поленившиеся сообщить.

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

Минусы существующих систем мониторинга

Вкратце о том, почему большинство тех, кто заморачивается, пишет собственные решения и тратит на это тысячи долларов:

  • Во-первых, их (решений по мониторингу) очень мало.
  • Во-вторых, они монструозны и избыточны для 98% стартапов и бизнеса.
  • В-третьих, они рассчитаны на использование с рабочего места.
  • В-четвертых, их API надо изучать и пользование ими тоже надо изучать.
  • В-пятых, их где-то надо разворачивать и поддерживать, чтобы они сами не упали.

getNotifiedBot

Наши плюсы:

  • Простота и элегантность. Наш интерфейс состоит из четырех команд, которыми вы, скорее, никогда даже не воспользуетесь: /pause (пауза в оповещениях), /unpause (отмена паузы), /show_token (узнать свой токен) и /regen_token (создать новый токен)
  • Не надо думать о поддержке, покупать отдельный сервер для мониторинга, забывать его продлить.
  • Настройка занимает пять минут и полностью описана ниже.

При входе в бот вам будет предложено выполнить команду /help, чтобы узнать ваш токен и уже описанные выше специфические команды.

В этот момент вы получаете персональный секретный токен и адрес вида https://getnotifiedbot.com/notify/<TOKEN> для отправки оповещений. На этот адрес вы можете слать GET- или POST-запросы с текстом сообщения, записанным в параметр message. Мы рекомендуем использовать POST, чтобы не зависеть от URL-кодировки сообщения в случае с GET.

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

Пример интеграции для оповещения обо всех исключениях на Node.JS:

function getNotified(event) { axios.post('https://getnotifiedbot.com/notify/<TOKEN>', { message: JSON.stringify(event) }); } process.on('rejectionHandled', getNotified); process.on('unhandledRejection', getNotified); process.on('uncaughtException', getNotified);

Дальнейшее использование функции getNotified — на ваше усмотрение

Итак, если вы хотите быть в курсе того, что происходит в вашем приложении, welcome: getNotifiedBot!

23
36 комментариев