TL;DR: Telegram заблокирован, уведомления из Zabbix не доходят. Пошаговый гайд: как интегрировать мессенджер Max вместо Telegram. Скрипт вебхука внутри.


Введение

Дисклеймер: На момент написания статьи (Март 2026 года) Telegram заблокирован на территории РФ. Многие компании вынуждены искать альтернативы для рабочих чатов и систем уведомлений.

Раньше всё было просто: Zabbix → Telegram-бот → уведомление в чат. Удобно, бесплатно, работает. Но после блокировки мессенджера эта схема перестала быть надёжной: VPN отваливается, корпоративная политика запрещает обход блокировок, а команда остаётся без критически важных уведомлений.

Нужно было решение, которое:

  • Работает без VPN на территории РФ

  • Имеет стабильный API для интеграций

Выбор пал на Max. В этой статье покажу, как я заменил Telegram на Max в связке с Zabbix 7. Официальная документация местами озадачила, поэтому я опишу путь, который оказался проще и привёл к рабочему результату.


Почему именно Max?

Честно — мы не проводили глубоких сравнительных исследований. Главным критерием было время.

Уведомления нужны были «вчера», а Telegram перестал быть надёжным каналом. Смотрели на три варианта:

Вариант

Почему не подошёл

Mattermost / Rocket.Chat

Нужно разворачивать свои сервера, поддерживать, обновлять. Это лишняя инфраструктура в и без того насыщенный стек.

VK WorkSpace

Потребовал бы долгих согласований доступа к API и интеграции с корпоративным порталом.

Почта / SMS

Работает, но медленно. Для критических алертов не подходит.

С SMS вообще отдельная история

Max подошёл как «коробочное» решение:

  • Российская юрисдикция

  • Облачная платформа (не нужно поднимать и поддерживать сервера)

  • Есть HTTP API для ботов (можно интегрировать без костылей)

Это позволило сосредоточиться на самой интеграции с Zabbix, а не на развёртывании и поддержке мессенджера.

Итог: выбрали не потому что «лучший», а потому что быстро внедрить и забыть.

Что понадобится:

  1. Доступ к платформе Max.

  2. Токен бота для авторизации в API.

  3. Доступ к веб-интерфейсу Zabbix 7.x.


Шаг 1: Получение токена бота

Честно: моим путём вы бота не получите по этому я не буду тут рассказывать как я его раздобыл.

Но токен можно получить официально:

- Через VK Business (платформа Max интегрирована с экосистемой VK)

- Только для юридических лиц и организаций

- После подачи заявки и модерации

> 📌 Если вы частное лицо или небольшая команда: возмож��о, стоит рассмотреть альтернативы или использовать промежуточный webhook-прокси.

Что вам нужно в итоге: строка токена для авторизации в заголовке Authorization. Без этого дальнейшая настройка не имеет смысла.


Шаг 2: Определяем Chat ID получателя

Max в веб-версии использует числовые идентификаторы чатов и пользователей. Чтобы узнать ID чата, в который бот будет отправлять сообщения:

  • Откройте нужный чат в веб-интерфейсе Max.

  • Посмотрите на адресную строку браузера:

    https://web.max.ru/123456

    Число после / (в примере 123456) — это и есть Chat ID.

Запишите его — он понадобится при привязке медиа-типа к пользователю в Zabbix.


Шаг 3: Создание Media Type в Zabbix

Переходим в веб-интерфейс Zabbix:

  1. AlertsMedia typesCreate media type.

  2. Name: Max Messenger

  3. Type: Webhook

  4. Переходим на вкладку Webhook.

Скрипт отправки

В поле Script вставляем JavaScript-код. Я уже учёл все подводные камни (авторизация, формат запроса), так что можно копировать:

var MaxMessenger = {
    apiUrl: null,
    token: null,
    to: null,           // chat_id или user_id
    message: null,
    subject: null,
    proxy: null,
    isUser: false,      // true = отправляем пользователю, false = в чат

    sendMessage: function () {
        //Формируем URL с параметром получателя
        var param = MaxMessenger.isUser ? 'user_id' : 'chat_id';
        var url = MaxMessenger.apiUrl + '/messages?' + param + '=' + encodeURIComponent(MaxMessenger.to);

        //Тело запроса
        var payload = {
            text: (MaxMessenger.subject ? MaxMessenger.subject + '\n' : '') + MaxMessenger.message
        };

        var request = new HttpRequest();
        var data = JSON.stringify(payload);

        if (MaxMessenger.proxy) {
            request.setProxy(MaxMessenger.proxy);
        }

        // Заголовки
        request.addHeader('Content-Type: application/json; charset=utf-8');
        request.addHeader('Accept: application/json');
        request.addHeader('Authorization: ' + MaxMessenger.token);  // Без "Bearer"!

        // Логирование
        Zabbix.log(4, '[Max] POST ' + url);
        Zabbix.log(4, '[Max] Body: ' + data);

        var response = request.post(url, data);
        var status = request.getStatus();
        
        Zabbix.log(4, '[Max] HTTP ' + status + ' | Response: ' + response);

        if (status >= 200 && status < 300) {
            return 'OK';
        } else {
            throw 'HTTP ' + status + ': ' + response;
        }
    }
};

try {
    var params = JSON.parse(value);
    
    // Проверка обязательных параметров
    ['ApiUrl', 'Token', 'To', 'Subject', 'Message'].forEach(function(p) {
        if (!params[p]) throw 'Parameter "' + p + '" is missing';
    });

    MaxMessenger.apiUrl = params.ApiUrl;
    MaxMessenger.token = params.Token;
    MaxMessenger.to = params.To;
    MaxMessenger.subject = params.Subject;
    MaxMessenger.message = params.Message;
    
    // Опционально: флаг отправки пользователю (по умолчанию — чат)
    if (params.IsUser && params.IsUser.toLowerCase() === 'true') {
        MaxMessenger.isUser = true;
    }

    MaxMessenger.sendMessage();
    return 'OK';
}
catch (error) {
    Zabbix.log(4, '[Max ERROR] ' + error);
    throw 'Sending failed: ' + error + '.';
}

Шаг 4: Настройка параметров (Parameters)

Переходим на вкладку Parameters и добавляем переменные. Имена параметров должны точно совпадать с теми, что используются в скрипте (чувствительно к регистру!).

Name

Value

Описание

ApiUrl

https://platform-api.max.ru

Базовый URL API

Token

Token

Токен бота


Заключение

Интеграция Max Messenger с Zabbix — задача решаемая, и после правильной настройки вы получаете стабильный канал уведомлений, не зависящий от блокировок и VPN.

Что важно запомнить:

  • Токен бота общий для всех, Chat ID индивидуальный.

  • Скрипт вебхука легко адаптируется под особенности вашего API.

  • Всегда включайте логирование на этапе отладки.

  • Проверяйте связку через curl перед настройкой в Zabbix.

Надеюсь, этот гайд сэкономит вам несколько часов поиска и экспериментов.