Ad Widget

Collapse

Zabbix 6 com Telegram - Erro 'CurlHttpRequest'

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jpereirasilva
    Junior Member
    • Mar 2022
    • 5

    #1

    Zabbix 6 com Telegram - Erro 'CurlHttpRequest'

    Olá pessoal, tudo bem?

    Depois que atualizei o Zabbix da versão 5 para 6 começou a dar esse Erro "Sending failed: ReferenceError: identifier 'CurlHttpRequest' undefined." de envio pelo Telegram.

    Até a atualização funcionava normalmente.

    Alguem já passou ou resolveu esse problema?
  • jpereirasilva
    Junior Member
    • Mar 2022
    • 5

    #2
    Estou utilizando esse script:

    var Telegram = {
    token: null,
    to: null,
    message: null,
    proxy: null,
    parse_mode: null,

    sendMessage: function() {
    var params = {
    chat_id: -123456789,
    text: Telegram.message,
    disable_web_page_preview: true,
    disable_notification: false
    },
    data,
    response,
    request = new CurlHttpRequest(),
    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.Status());

    try {
    response = JSON.parse(response);
    }
    catch (error) {
    response = null;
    }

    if (request.Status() !== 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;
    }

    if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) {
    Telegram.parse_mode = params.ParseMode;
    }

    Telegram.to = params.To;
    Telegram.message = params.Subject + '\n' + params.Message;
    Telegram.sendMessage();

    return 'OK';
    }
    catch (error) {
    Zabbix.Log(4, '[Telegram Webhook] notification failed: ' + error);
    throw 'Sending failed: ' + error + '.';
    }

    Comment

    • jpereirasilva
      Junior Member
      • Mar 2022
      • 5

      #3
      Pessoal consegui resolver alterando o script, segue abaixo o modelo que funcionou:


      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: -123456789,
      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 + '.';
      }




      Obs: Lembre-se de alterar o numero do seu chat_id.

      Comment

      • joseroa
        Member
        • Jun 2022
        • 72

        #4
        Como você tem a opção Telegram configurada no tipo de mídia?

        Click image for larger version

Name:	telegrem.png
Views:	1523
Size:	121.5 KB
ID:	447354


        Comment

        • jpereirasilva
          Junior Member
          • Mar 2022
          • 5

          #5
          joseroa bom Tarde!

          Tenho sim amigo, já consegui resolver. Muito obrigado!

          Comment

          Working...