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!

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

1) Отправлять возможно важную инфу через стороннего бота?
2) Чем разработчику sentry не угодил?
3) Зачем использовать стороннего бота, если можно сделать своего? Для начала бот-прокси, который просто пересылает инфу подписавшимся. Есть 1001 решения для написания ботов.

Я бы, как разработчик, не доверился такому боту. Слишком прост для стороннего решения.

9

3. Сделайте, почему нет. Просто средний разработчик потратит на эту разработку пару-тройку часов и должен будет поддерживать отдельный сервер на отдельном хостинге, на котором должен лежать такой продукт. Это время, деньги и риски.
Хочу обратить ваше внимание, что сделать боевой публичный API as a Service это не то же самое что запустить Express с одним методом.

Мы будем постепенно допиливать наш продукт и делать его более многофункциональным и стоящим заметно меньше, чем трудозатраты программиста.

Если хотите взглянуть на не слишком простой сервис, советую глянуть наш ActualizeBot

3

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

3

2. Зачем сразу не угодил?
Я работал на проектах, использовавших, sentry — приходили такие же оповещения. Но sentry:
а) Заточен на ловлю багов и не заточен на работу с событиями другого порядка
б) Комплексный сервис и требует дополнительного погружения и внедрения — вы не начнете работать с sentry за 1 минуту.
в) Не приспособлен для гибкости, раскрытой в нашем боте — вызывай нотификации оттуда, откуда хочешь и с той целью, с которой хочешь.

Sentry на минималках?

3

Sentry здорового человека )

2

Почему только на английском ? 

1