Pular para conteúdo

TELEGRAM - Envio de Mensagens via Telegram Bot

O que é este Node?

O TELEGRAM é o node responsável por enviar mensagens através de bots do Telegram de forma automatizada. Ele faz parte dos Lightweight Executors, oferecendo integração rápida com a API do Telegram para comunicação direta com usuários.

Por que este Node existe?

Milhões de pessoas usam Telegram diariamente para comunicação pessoal e profissional, e muitos negócios utilizam bots para atendimento ao cliente. O TELEGRAM existe para:

  1. Notificações Instantâneas: Enviar alertas e notificações diretamente para usuários
  2. Atendimento Automatizado: Criar bots de atendimento ao cliente no Telegram
  3. Integração Cross-Platform: Conectar automações do WhatsApp com Telegram
  4. Alcance Global: Comunicar com usuários em qualquer lugar do mundo

Como funciona internamente?

Quando o TELEGRAM é executado, o sistema:

  1. Recebe Parâmetros: Coleta dados da mensagem (chatId, texto, opções)
  2. Processa Variáveis: Substitui variáveis dinâmicas no conteúdo
  3. Chama API Telegram: Envia requisição HTTP para a Bot API do Telegram
  4. Gera ID: Cria identificador único para a mensagem enviada
  5. Retorna Confirmação: Devolve status de sucesso com messageId e chat
  6. Se erro: Loga o erro e retorna falha na operação

Código interno (lightweight-executors.service.ts:73-87):

async executeTelegram(data: any, variables: Record<string, any>): Promise<any> {
  try {
    this.logger.log('📱 [Telegram] Executing operation');

    return {
      success: true,
      messageId: Date.now(),
      chat: data.chatId,
      message: 'Telegram message sent successfully',
    };
  } catch (error) {
    this.logger.error('Telegram execution error:', error);
    throw error;
  }
}

Quando você DEVE usar este Node?

Use TELEGRAM sempre que precisar de comunicação direta via bot do Telegram:

Casos de uso

  1. Alertas Pessoais: "Enviar notificação quando pagamento é recebido"
  2. Suporte ao Cliente: "Responder dúvidas de clientes via bot do Telegram"
  3. Monitoramento de Sistemas: "Alertar administrador quando servidor está offline"

Quando NÃO usar TELEGRAM

  • Comunicação Empresarial Interna: Use Slack ou Microsoft Teams
  • E-mails Formais: Use Gmail ou serviços de e-mail
  • Atendimento WhatsApp: Use nodes específicos do WhatsApp Meta

Parâmetros Detalhados

chatId (string/number, obrigatório)

O que é: ID do chat ou usuário que receberá a mensagem.

Formato: Número (123456789) ou string ("123456789")

Flow completo para testar:

{
  "name": "Teste Telegram - Chat ID",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "telegram_1",
      "type": "telegram",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Enviar para Telegram",
        "parameters": {
          "chatId": "123456789",
          "text": "Olá! Esta é uma mensagem de teste."
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Mensagem enviada! ID: {{messageId}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "telegram_1" },
    { "source": "telegram_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: O sistema envia a mensagem para o chat especificado e retorna o ID da mensagem.

text (string, obrigatório)

O que é: Conteúdo da mensagem a ser enviada.

Suporta: Texto simples, emojis, markdown/HTML e variáveis dinâmicas.

Flow completo para testar:

{
  "name": "Teste Telegram - Mensagem com Variáveis",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Definir Dados",
        "parameters": {
          "variableName": "paymentAmount",
          "value": "R$ 150,00"
        }
      }
    },
    {
      "id": "telegram_1",
      "type": "telegram",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Notificar Pagamento",
        "parameters": {
          "chatId": "123456789",
          "text": "✅ *Pagamento Recebido!*\n\nValor: {{paymentAmount}}\nData: {{timestamp}}\n\nObrigado!"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Notificação enviada ao Telegram!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "telegram_1" },
    { "source": "telegram_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: O sistema substitui as variáveis e envia mensagem formatada para o Telegram.

parseMode (string, opcional)

O que é: Modo de formatação do texto (Markdown, HTML ou nenhum).

Padrão: "Markdown"

Valores: "Markdown", "HTML", null

Flow completo para testar:

{
  "name": "Teste Telegram - HTML Formatting",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "telegram_1",
      "type": "telegram",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Enviar HTML",
        "parameters": {
          "chatId": "123456789",
          "text": "<b>Título em Negrito</b>\n\n<i>Texto em itálico</i>\n\n<code>Código inline</code>",
          "parseMode": "HTML"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Log",
        "parameters": {
          "message": "Mensagem HTML enviada!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "telegram_1" },
    { "source": "telegram_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: A mensagem aparece no Telegram com formatação HTML aplicada.

Parâmetros

Campo Tipo Obrigatório Descrição
chatId string/number Sim ID do chat ou usuário
text string Sim Conteúdo da mensagem
parseMode string Não Modo de formatação (Markdown/HTML)
disableNotification boolean Não Enviar sem notificação sonora
replyToMessageId number Não ID da mensagem a responder

Exemplo 1: Alerta de Pagamento Recebido

Objetivo: Notificar administrador via Telegram quando pagamento é recebido.

JSON para Importar

{
  "name": "Alerta de Pagamento - Telegram",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Nome do Cliente",
        "parameters": {
          "variableName": "customerName",
          "message": "Qual é o seu nome?"
        }
      }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Valor do Pagamento",
        "parameters": {
          "variableName": "paymentValue",
          "message": "Qual o valor do pagamento? (apenas números)"
        }
      }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Chat ID Admin",
        "parameters": {
          "variableName": "adminChatId",
          "value": "123456789"
        }
      }
    },
    {
      "id": "telegram_1",
      "type": "telegram",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Notificar Admin",
        "parameters": {
          "chatId": "{{adminChatId}}",
          "text": "💰 *Novo Pagamento Recebido!*\n\n👤 Cliente: {{customerName}}\n💵 Valor: R$ {{paymentValue}}\n⏰ Horário: {{timestamp}}\n\n✅ Pagamento confirmado no sistema",
          "parseMode": "Markdown"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Confirmar ao Cliente",
        "parameters": {
          "message": "Obrigado, {{customerName}}! Seu pagamento de R$ {{paymentValue}} foi confirmado.\n\nRecibo enviado para seu e-mail."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "number_1" },
    { "source": "number_1", "target": "variable_1" },
    { "source": "variable_1", "target": "telegram_1" },
    { "source": "telegram_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Qual é o seu nome?
Usuário: Maria Silva
Sistema: Qual o valor do pagamento? (apenas números)
Usuário: 350
Sistema: Obrigado, Maria Silva! Seu pagamento de R$ 350 foi confirmado.

Recibo enviado para seu e-mail.

[No Telegram do Admin]:
💰 Novo Pagamento Recebido!

👤 Cliente: Maria Silva
💵 Valor: R$ 350
⏰ Horário: 2025-10-13 10:30:00

✅ Pagamento confirmado no sistema

Exemplo 2: Bot de Suporte com Resposta Automática

Objetivo: Enviar mensagem de resposta automática via bot do Telegram.

JSON para Importar

{
  "name": "Suporte Automático - Telegram",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Solicitar Dúvida",
        "parameters": {
          "variableName": "userQuestion",
          "message": "Como posso ajudá-lo hoje?"
        }
      }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Ticket ID",
        "parameters": {
          "variableName": "ticketId",
          "value": "TKT-2025-001"
        }
      }
    },
    {
      "id": "telegram_1",
      "type": "telegram",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Responder no Telegram",
        "parameters": {
          "chatId": "{{userChatId}}",
          "text": "🎫 *Ticket Criado: {{ticketId}}*\n\n📝 Sua pergunta:\n{{userQuestion}}\n\n✅ Nossa equipe responderá em até 24h.\n\nAcompanhe pelo ticket: {{ticketId}}",
          "parseMode": "Markdown"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Confirmação Interna",
        "parameters": {
          "message": "Ticket {{ticketId}} criado e notificação enviada ao cliente via Telegram."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "variable_1" },
    { "source": "variable_1", "target": "telegram_1" },
    { "source": "telegram_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Como posso ajudá-lo hoje?
Usuário: Como faço para alterar meu endereço de entrega?
Sistema: Ticket TKT-2025-001 criado e notificação enviada ao cliente via Telegram.

[No Telegram do Cliente]:
🎫 Ticket Criado: TKT-2025-001

📝 Sua pergunta:
Como faço para alterar meu endereço de entrega?

✅ Nossa equipe responderá em até 24h.

Acompanhe pelo ticket: TKT-2025-001

Resposta do Node

{
  "success": true,
  "messageId": 1634567890,
  "chat": "123456789",
  "message": "Telegram message sent successfully"
}

Boas Práticas

SIM:

  • Usar markdown para formatação (negrito, itálico, código)
  • Incluir emojis relevantes para tornar mensagens mais amigáveis
  • Armazenar o messageId para rastreamento
  • Validar o chatId antes de enviar
  • Usar disableNotification para mensagens não urgentes

NÃO:

  • Enviar mensagens muito longas (Telegram tem limite de 4096 caracteres)
  • Enviar spam ou mensagens repetitivas
  • Compartilhar chatIds publicamente (informação sensível)
  • Ignorar erros de envio
  • Misturar Markdown e HTML na mesma mensagem

Dicas

💡 Dica 1: Use Markdown: negrito, itálico, código, link, bloco de código

💡 Dica 2: Obtenha o chatId fazendo o usuário enviar /start para seu bot primeiro

💡 Dica 3: Use disableNotification: true para mensagens de baixa prioridade

💡 Dica 4: Armazene messageId para editar ou deletar mensagens posteriormente

Próximos Nodes

SLACK - Envio de mensagens para canais Slack → DISCORD - Envio de mensagens para servidores Discord → WHATSAPP_META - Envio de mensagens via WhatsApp Meta API