Ad Widget

Collapse

Уведомления в telegram

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • VladimirN
    Member
    • May 2014
    • 41

    #1

    Уведомления в telegram

    Добрый день.

    Есть настроенный сервер Zabbix во внутренней сети который отправляет сообщения по событиям с оборудованием в telegram. С некоторого времени сообщения перестали отправляться из-за блокировок/замедлений. Есть ли возможность в способах оповещения указать отправку сообщений в telegram через какой-то указанный прокси-сервер?
  • guntis_liepins
    Member
    • Oct 2025
    • 55

    #2
    here you can read some docs about this webhook https://github.com/zabbix/zabbix/blo...gram/README.md
    "each webhook supports an HTTP proxy. To use this feature, add a new media type parameter with the name http_proxy and set its value to the proxy URL."

    Comment

    • VladimirN
      Member
      • May 2014
      • 41

      #3
      Originally posted by guntis_liepins
      here you can read some docs about this webhook https://github.com/zabbix/zabbix/blo...gram/README.md
      "each webhook supports an HTTP proxy. To use this feature, add a new media type parameter with the name http_proxy and set its value to the proxy URL."
      Добрый день. Да, действительно Вы правы - настроил что было необходимо. Небольшое уточнение: в моём случае параметр был HTTPProxy , а не http_proxy из-за старой версии способа оповещения. Спасибо!
      Last edited by VladimirN; 24-03-2026, 10:23.

      Comment

      • djin59
        Member
        • Jul 2023
        • 89

        #4
        поделитесь пожалуйста кодом Вашего webhook для данного оповещения? и скрин-шотом передаваемых параметров

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3433

          #5
          Originally posted by djin59
          поделитесь пожалуйста кодом Вашего webhook для данного оповещения?
          А чем не устраивает то, что по ссылке выше?
          Там в левом верхнем углу есть неочевидная кнопка, где по умолчанию указано "master", но можно явно выбрать свою версию Zabbix (например, "release/7.0").

          Comment


          • djin59
            djin59 commented
            Editing a comment
            да в принципе всем устраивает тоже перестало работать оповещение в телеграмм вот пытаюсь понять из-за был "HTTPProxy , а не http_proxy " или все же не в этом дело
            я собственно уже реализовал оповещение через Вконтакте как альтернативу.
        • VladimirN
          Member
          • May 2014
          • 41

          #6
          Code:
          var Telegram = {
          token: null,
          to: null,
          message: null,
          proxy: null,
          parse_mode: null,
          
          escapeMarkup: function (str, mode) {
          switch (mode) {
          case 'markdown':
          return str.replace(/([_*\[`])/g, '\\$&');
          
          case 'markdownv2':
          return str.replace(/([_*\[\]()~`>#+\-=|{}.!])/g, '\\$&');
          
          default:
          return str;
          }
          },
          
          sendMessage: function () {
          var params = {
          chat_id: Telegram.to,
          text: Telegram.message,
          disable_web_page_preview: true,
          disable_notification: false
          },
          data,
          response,
          request = new HttpRequest(),
          url = 'https://api.telegram.org/bot' + Telegram.token + '/sendMessage';
          
          if (Telegram.parse_mode !== null) {
          params['parse_mode'] = Telegram.parse_mode;
          }
          
          if (Telegram.proxy) {
          request.setProxy(Telegram.proxy);
          }
          
          request.addHeader('Content-Type: application/json');
          data = JSON.stringify(params);
          
          // Remove replace() function if you want to see the exposed token in the log file.
          Zabbix.log(4, '[Telegram Webhook] URL: ' + url.replace(Telegram.token, '<TOKEN>'));
          Zabbix.log(4, '[Telegram Webhook] params: ' + data);
          response = request.post(url, data);
          Zabbix.log(4, '[Telegram Webhook] HTTP code: ' + request.getStatus());
          
          try {
          response = JSON.parse(response);
          }
          catch (error) {
          response = null;
          }
          
          if (request.getStatus() !== 200 || typeof response.ok !== 'boolean' || response.ok !== true) {
          if (typeof response.description === 'string') {
          throw response.description;
          }
          else {
          throw 'Unknown error. Check debug log for more information.';
          }
          }
          }
          };
          
          try {
          var params = JSON.parse(value);
          
          if (typeof params.Token === 'undefined') {
          throw 'Incorrect value is given for parameter "Token": parameter is missing';
          }
          
          Telegram.token = params.Token;
          
          if (params.HTTPProxy) {
          Telegram.proxy = params.HTTPProxy;
          }
          
          params.ParseMode = params.ParseMode.toLowerCase();
          
          if (['markdown', 'html', 'markdownv2'].indexOf(params.ParseMode) !== -1) {
          Telegram.parse_mode = params.ParseMode;
          }
          
          Telegram.to = params.To;
          Telegram.message = params.Subject + '\n' + params.Message;
          
          if (['markdown', 'markdownv2'].indexOf(params.ParseMode) !== -1) {
          Telegram.message = Telegram.escapeMarkup(Telegram.message, params.ParseMode);
          }
          
          Telegram.sendMessage();
          
          return 'OK';
          }
          catch (error) {
          Zabbix.log(4, '[Telegram Webhook] notification failed: ' + error);
          throw 'Sending failed: ' + error + '.';
          }
          Attached Files

          Comment

          Working...