Решил опубликовать, может кому пригодится ..... оповещения в ВК , как альтернатива другим "оповещалкам"
Собственно сам WebHook:
1) регистрируемся в ВК
2) создаем сообщество, лучше закрытое или частное
3) приглашаем в сообщество пользователей= оповещателей, которым будем слать месседжи из Zabbix
4) Пользователь ОБЯЗАТЕЛЬНО должен написать сообществу сообщение , чтобы была возможность получать сообщения от сообщества
5) Просим от оповещателей прислать их цифровой ID VK (указываем его для данного оповещения в настройках пользователя Zabbix)
6) Получаем токен сообщества: Заходим в управляемое сообщество - Управление -Дополнительно -Работа с API- Создаем токен, если нету (вносим в webhook)
7) Настраиваем прокси в webhook, если нужен...
Ниже bash , если кому нужен
Собственно сам WebHook:
Code:
'use strict';
try {
var params = JSON.parse(value);
// Проверка обязательных параметров
if (!params.To || params.To.trim() === '') {
throw 'Параметр "To" (user_id) обязателен!';
}
if (!params.Message || params.Message.trim() === '') {
throw 'Параметр "Message" обязателен!';
}
// Формируем сообщение с URL-кодированием (как в shell-скрипте)
var subject = params.Subject ? encodeURIComponent(params.Subject) : '';
var message = encodeURIComponent(params.Message);
var fullMessage = subject ? subject + '%0A' + message : message;
// Токен доступа VK (замените на свой)
var vkAccessToken = 'ТОКЕН'; // используйте правильный токен
// Генерация random_id (аналог od -An -N2 -i /dev/random)
var randomId = Math.floor(Math.random() * 0x7FFFFFFF); // 31-битное случайное число
// Параметры запроса в виде строки (для прямой передачи в post)
var queryString = 'access_token=' + encodeURIComponent(vkAccessToken) +
'&user_id=' + encodeURIComponent(params.To.toString()) +
'&message=' + fullMessage +
'&v=5.199' +
'&random_id=' + randomId;
// Создаем HTTP-запрос
var req = new HttpRequest();
req.addHeader('Content-Type: application/x-www-form-urlencoded');
// Настраиваем прокси (обязательно, если требуется)
req.setProxy('ВАШ_ПРОКСИ'); // раскомментируйте и укажите свой прокси
// Отправляем POST-запрос
var response = req.post('https://api.vk.com/method/messages.send', queryString);
// Логирование
Zabbix.Log(4, '[VK Webhook] Request: ' + queryString);
Zabbix.Log(4, '[VK Webhook] Response: ' + response);
// Проверяем статус HTTP
if (req.getStatus() < 200 || req.getStatus() >= 300) {
throw 'HTTP Error: ' + req.getStatus() + ' - ' + response;
}
// Парсим ответ VK
var respObj = JSON.parse(response);
if (respObj.error) {
throw 'VK API Error: ' + JSON.stringify(respObj.error);
}
return 'OK';
}
catch (error) {
Zabbix.Log(3, '[VK Webhook] ERROR: ' + error);
throw 'Ошибка отправки: ' + error;
}
2) создаем сообщество, лучше закрытое или частное
3) приглашаем в сообщество пользователей= оповещателей, которым будем слать месседжи из Zabbix
4) Пользователь ОБЯЗАТЕЛЬНО должен написать сообществу сообщение , чтобы была возможность получать сообщения от сообщества
5) Просим от оповещателей прислать их цифровой ID VK (указываем его для данного оповещения в настройках пользователя Zabbix)
6) Получаем токен сообщества: Заходим в управляемое сообщество - Управление -Дополнительно -Работа с API- Создаем токен, если нету (вносим в webhook)
7) Настраиваем прокси в webhook, если нужен...
Ниже bash , если кому нужен
Code:
#!/bin/sh
# Positional args
vk_user_id=$1
vk_subject=$2
vk_message=$3
# Group access token
vk_access_token="ТОКЕН"
# Get random id
vk_random_id=$(od -An -N2 -i /dev/random | tr -d '[:space:]')
# Message template
vk_full_message="$vk_subject%0A$vk_message"
# VK Api link to messages.send method
vk_api_method_url="https://api.vk.com/method/messages.send"
# Прокси (замените на свои данные)
PROXY="ВАШ_ПРОКСИ"
# Execute with proxy
curl -x "$PROXY" \
-d "access_token=$vk_access_token&user_id=$vk_user_id&message=$vk_full_message&v=5.199&random_id=$vk_random_id" \
$vk_api_method_url