В данной статье поделюсь опытом, как за пару часов настроить мониторинг Firebase крашей в Telegram-канале. Можно настроить мониторинг только на фатальные ошибки, проблемы с dSYM файлами, повторяющиеся проблемы и т.д. Все бесплатно, но есть некоторые ограничения, о которых поговорим в конце.
Если отобразить процесс на схеме, то он будет выглядеть следующим образом:
Содержание
Настраиваем Slack
Для начала нам необходимо настроить Slack, именно с ним в Firebase есть простая интеграция. Создаем приватный канал (в моем случае crash), запоминаем название:
Далее нам необходимо настроить вебхуки (Incoming Webhooks). От команды slack есть хорошая инструкция на эту тему, в целом, можно использовать ее: Sending messages using Incoming Webhooks. Но если вам удобнее идти по моей статье, смотрим на картинки ниже.
Переходим по ссылке: Создать новое приложение Slack. Выбираем From scratch:
Задаем название приложения (в моем случае Lexico Crash) и указываем ваш workspace. Нажимаем Create App:
После создания приложения выбираем Incoming Webhooks:
Переключаем ползунок в активное состояние:
На этой же странице листаем вниз и нажимаем Add new Webhook to Workspace:
Выбираем наш приватный канал, в который будут приходить сообщения:
Webhook URL можно скопировать в форме ниже:
Сохраняем URL, он нам понадобится при настройке Firebase.
Настраиваем Firebase
Как настроить интеграцию Firebase с iOS или Android приложением рассказывать не буду, про это есть множество статей, включая статью от команды Firebase: читаем здесь
На этом этапе я предполагаю что у вас уже есть готовый проект в Firebase, в котором отображаются краши вашего приложения.
Заходим в проект, далее Project settings:
Открываем вкладку с интеграциями и выбираем Slack:
Указываем созданный на первом этапе Webhook URL, название приватного канала в Slack и название пользователя, от которого будем получать сообщения:
Проверяем что все настроено корректно, отправляем тестовое сообщение в Slack:
Проверяем сообщение в нашем приватном канале:
Далее осталось настроить типы ошибок, которые мы хотим получать в Slack:
Если вы активно используете Slack, то настройку мониторинга крашей можно закончить и на этом этапе. Сообщения в приватный канал будут приходить с небольшой задержкой.
Настраиваем Telegram
Открываем бота @BotFather для создания ботов в Telegram. Отправляем команду /newbot:
Задаем название бота. Учтите, название должно содержать слово bot: NameBot или name_bot. После создания бота вы увидите токен, сохраняем его:
Добавляем нашего бота в вашу группу или Telegram-канал:
И последнее, что нам нужно сделать — найти идентификатор нашей группы с ботом. Ищем в поисковой строке бота @username_to_id_bot и отправляем ему ссылку на нашу группу (либо используем интерфейс, где на скриншоте ниже):
В ответ получаем идентификатор группы:
Сохраняем идентификатор, он понадобится на следующем шаге.
Настраиваем Make
Для реализации прокси-слоя между Slack и Telegram можно использовать Slack-бота или другие инструменты, например, Make.
Переходим на сайт make.com. Регистрируемся и заходим на вкладку Scenarios, создаем новый сценарий:
Нажимаем на большой плюс и ищем Slack:
Из списка выбираем Watch Private Channel Messages:
Настраиваем интеграцию со Slack: указываем приватный канал из которого необходимо читать сообщения (Firebase краши) и устанавливаем лимит сообщений на чтение — то количество сообщений, которые Make будет вычитывать из канала при очередной итерации:
После сохранения настроек вы должны увидеть что-то такое:
Нажимаем на плюс для связки с другим сервисом и ищем Telegram Bot:
Выбираем сценарий Send a Text Message or a Reply:
Далее необходимо добавить нашего Telegram-бота, для этого используем полученный токен в прошлом разделе:
Далее указываем идентификатор группы, куда Make будет пересылать сообщения. Заполняем поле Text следующим содержимым:
Появился новый краш в Firebase!
<b>Текст ошибки</b>: {{1.text}}
<b>Приложение</b>: {{map(1.attachments[].fields; "value"; "title"; "App")}}
<b>Версия</b>: {{map(1.attachments[].fields; "value"; "title"; "Version")}}
<b>Платформа</b>: {{map(1.attachments[].fields; "value"; "title"; "Platform")}}
<b>Ссылка на ошибку</b>: {{escapeHTML(map(1.attachments[].fields; "value"; "title"; "Summary"))}}
-----------------
{{newline}}
Остальные настройки заполняем на свое усмотрение:
После сохранения всех настроек у вас должна получиться похожая диаграмма:
Сохраняем сценарий. Все что осталось сделать — активировать сценарий:
Если вы все сделали по инструкции выше, то Make будет читать сообщения из Slack-канала каждые 15 минут. Этот интервал можно изменить под диаграммой:
Смотрим на результат
В Slack отправляем любое сообщение:
В течение 15 минут (или в тот интервал, который вы настроили) в Telegram-канале должно появиться сообщение:
В дальнейшем, при появлении крашей в Firebase, они автоматически отправляются в Slack-канал:
И в момент очередной итерации чтения Slack-канала сообщения пересылаются в Telegram-канал:
Ограничения
В бесплатном плане Make позволяет совершать 1000 операций в месяц. Учтите, что прочитать канал в Slack — одна операция, переслать сообщение в Telegram — другая. То есть каждую итерацию Make совершает минимум одну операцию.
Из бонусов — вы можете подключить несколько проектов Firebase к одному Slack-каналу (используя одинаковые вебхуки) и краши по всем проектам Firebase будут приходить в один Telegram-канал.
Что почитать еще:
Выразить благодарность или найти уникальный материал вы можете в boosty.
Подписывайтесь на мой Telegram-канал iOS Interview Channel, чтобы не пропустить новый материал.