Pular para conteúdo

ZENDESK TICKET GET - Buscar Ticket Específico

O que é este Node?

O ZENDESK TICKET GET é o node responsável por buscar informações detalhadas de um ticket específico no Zendesk, permitindo consultar status, comentários e dados atualizados.

Por que este Node existe?

Quando um cliente quer saber o andamento do seu ticket ou quando precisamos verificar informações antes de atualizar, é essencial buscar os dados atuais. O ZENDESK TICKET GET existe para:

  1. Consulta de Status: Permitir que clientes verifiquem o andamento do ticket
  2. Verificação de Dados: Obter informações antes de atualizar ou processar
  3. Acompanhamento Automatizado: Verificar se tickets foram resolvidos ou precisam ação
  4. Integração com Outros Sistemas: Obter dados do Zendesk para usar em outros processos

Como funciona internamente?

Quando o ZENDESK TICKET GET é executado, o sistema:

  1. Valida Credenciais: Verifica subdomain, email e API token do Zendesk
  2. Substitui Variáveis: Processa ticketId com valores do contexto
  3. Cria Cliente HTTP: Configura autenticação Basic Auth
  4. Faz Request GET: Busca ticket em /api/v2/tickets/{id}.json
  5. Se ticket não existe: Retorna erro 404
  6. Se sucesso: Retorna objeto ticket completo
  7. Armazena em Variável: Salva resposta na variável configurada

Código interno (zendesk.executor.ts:94-97):

case 'get':
  const ticketId = this.replaceVariables(data.ticketId, context.variables);
  const { data: ticketResponse } = await client.get(`/tickets/${ticketId}.json`);
  return ticketResponse.ticket;

Quando você DEVE usar este Node?

Use ZENDESK TICKET GET sempre que precisar consultar informações de um ticket:

Casos de uso

  1. Consulta de Status: "Cliente pergunta 'qual o status do meu ticket #12345?'"
  2. Verificação Antes de Atualizar: "Buscar ticket antes de adicionar comentário"
  3. Monitoramento: "Verificar se ticket foi resolvido para notificar cliente"

Quando NÃO usar ZENDESK TICKET GET

  • Listar Múltiplos Tickets: Use ZENDESK TICKET GETALL ao invés
  • Criar Ticket: Use ZENDESK TICKET CREATE
  • Atualizar Ticket: Use ZENDESK TICKET UPDATE (ele não precisa de GET antes)

Parâmetros Detalhados

config (object, obrigatório)

O que é: Objeto com credenciais de autenticação do Zendesk.

Estrutura:

{
  "subdomain": "sua-empresa",
  "email": "admin@empresa.com",
  "apiToken": "seu_token_aqui"
}

Flow completo para testar:

{
  "name": "Teste Zendesk - Get Config",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Definir ID",
        "parameters": {
          "variableName": "ticket_id",
          "value": "12345"
        }
      }
    },
    {
      "id": "zendesk_1",
      "type": "zendesk",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Buscar Ticket",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{ticket_id}}",
        "responseVariable": "ticket"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Mostrar Dados",
        "parameters": {
          "message": "Ticket encontrado!\nStatus: {{ticket.status}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "zendesk_1" },
    { "source": "zendesk_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Configure com ticket ID real → veja dados do ticket sendo exibidos

ticketId (string, obrigatório)

O que é: ID numérico do ticket a ser buscado.

Suporta variáveis: Sim, use {{variavel}} para valores dinâmicos.

Flow completo para testar:

{
  "name": "Teste Zendesk - Ticket ID Dinâmico",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Perguntar ID",
        "parameters": {
          "message": "Digite o número do ticket:",
          "variable": "numero_ticket"
        }
      }
    },
    {
      "id": "zendesk_1",
      "type": "zendesk",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Buscar Ticket",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{numero_ticket}}",
        "responseVariable": "ticket_encontrado"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Exibir Informações",
        "parameters": {
          "message": "📋 Ticket #{{ticket_encontrado.id}}\n\n✉️ Assunto: {{ticket_encontrado.subject}}\n📊 Status: {{ticket_encontrado.status}}\n⚡ Prioridade: {{ticket_encontrado.priority}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "zendesk_1" },
    { "source": "zendesk_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um número de ticket válido → veja informações completas do ticket

responseVariable (string, opcional)

O que é: Nome da variável onde o objeto ticket será armazenado.

Flow completo para testar:

{
  "name": "Teste Zendesk - Response Variable",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Definir ID",
        "parameters": {
          "variableName": "id_busca",
          "value": "12345"
        }
      }
    },
    {
      "id": "zendesk_1",
      "type": "zendesk",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Buscar",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{id_busca}}",
        "responseVariable": "dados_ticket"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Detalhes",
        "parameters": {
          "message": "ID: {{dados_ticket.id}}\nSubject: {{dados_ticket.subject}}\nDescription: {{dados_ticket.description}}\nStatus: {{dados_ticket.status}}\nPriority: {{dados_ticket.priority}}\nType: {{dados_ticket.type}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "zendesk_1" },
    { "source": "zendesk_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Execute → veja todos os campos do ticket acessíveis via variável

Parâmetros

Campo Tipo Obrigatório Descrição
config.subdomain string Sim Subdomínio do Zendesk
config.email string Sim Email da conta Zendesk
config.apiToken string Sim Token de API
ticketId string Sim ID do ticket a buscar (suporta {{variáveis}})
responseVariable string Não Nome da variável para armazenar resposta

Exemplo 1: Consulta de Status pelo Cliente

Objetivo: Cliente consulta o status do seu ticket informando o número

JSON para Importar

{
  "name": "Consulta de Status de Ticket",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "Olá! Vou consultar o status do seu ticket."
        }
      }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Perguntar Número",
        "parameters": {
          "message": "Digite o número do ticket:",
          "variable": "ticket_number"
        }
      }
    },
    {
      "id": "zendesk_1",
      "type": "zendesk",
      "position": { "x": 550, "y": 100 },
      "data": {
        "label": "Buscar Ticket",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{ticket_number}}",
        "responseVariable": "ticket"
      }
    },
    {
      "id": "switch_1",
      "type": "switch",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Verificar Status",
        "parameters": {
          "variable": "ticket.status",
          "cases": [
            { "value": "new", "targetVariable": "mensagem_status", "targetValue": "Seu ticket foi criado e está aguardando atribuição." },
            { "value": "open", "targetVariable": "mensagem_status", "targetValue": "Seu ticket está em atendimento! Nossa equipe está trabalhando nisso." },
            { "value": "pending", "targetVariable": "mensagem_status", "targetValue": "Seu ticket está aguardando informações adicionais." },
            { "value": "solved", "targetVariable": "mensagem_status", "targetValue": "Seu ticket foi resolvido! Se o problema persistir, responda este atendimento." }
          ],
          "default": "Status atual: {{ticket.status}}"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 850, "y": 100 },
      "data": {
        "label": "Informar Status",
        "parameters": {
          "message": "📋 Ticket #{{ticket.id}}\n✉️ {{ticket.subject}}\n\n{{mensagem_status}}\n\n⚡ Prioridade: {{ticket.priority}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1000, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "number_1" },
    { "source": "number_1", "target": "zendesk_1" },
    { "source": "zendesk_1", "target": "switch_1" },
    { "source": "switch_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Vou consultar o status do seu ticket.
Sistema: Digite o número do ticket:
Usuário: 12345
Sistema: 📋 Ticket #12345
✉️ Problema no checkout

Seu ticket está em atendimento! Nossa equipe está trabalhando nisso.

⚡ Prioridade: high

Exemplo 2: Verificação Antes de Atualizar

Objetivo: Buscar ticket para verificar dados antes de adicionar comentário

JSON para Importar

{
  "name": "Verificar Ticket Antes de Comentar",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "ID do Ticket",
        "parameters": {
          "message": "Digite o ID do ticket:",
          "variable": "ticket_id"
        }
      }
    },
    {
      "id": "zendesk_get",
      "type": "zendesk",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Buscar Ticket",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{ticket_id}}",
        "responseVariable": "ticket_atual"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 550, "y": 50 },
      "data": {
        "label": "Verificar se Está Aberto",
        "parameters": {
          "conditions": [
            {
              "variable": "ticket_atual.status",
              "operator": "equals",
              "value": "closed"
            }
          ]
        }
      }
    },
    {
      "id": "message_closed",
      "type": "message",
      "position": { "x": 700, "y": 50 },
      "data": {
        "label": "Ticket Fechado",
        "parameters": {
          "message": "Este ticket já está fechado. Não é possível adicionar comentários."
        }
      }
    },
    {
      "id": "input_2",
      "type": "input",
      "position": { "x": 700, "y": 150 },
      "data": {
        "label": "Comentário",
        "parameters": {
          "message": "Digite seu comentário:",
          "variable": "comentario"
        }
      }
    },
    {
      "id": "zendesk_update",
      "type": "zendesk",
      "position": { "x": 850, "y": 150 },
      "data": {
        "label": "Atualizar Ticket",
        "resource": "ticket",
        "operation": "update",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{ticket_id}}",
        "updates": {
          "comment": {
            "body": "{{comentario}}"
          }
        },
        "responseVariable": "ticket_atualizado"
      }
    },
    {
      "id": "message_success",
      "type": "message",
      "position": { "x": 1000, "y": 150 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "Comentário adicionado ao ticket #{{ticket_id}} com sucesso!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1150, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "zendesk_get" },
    { "source": "zendesk_get", "target": "condition_1" },
    { "source": "condition_1", "target": "message_closed", "label": "true" },
    { "source": "condition_1", "target": "input_2", "label": "false" },
    { "source": "message_closed", "target": "end_1" },
    { "source": "input_2", "target": "zendesk_update" },
    { "source": "zendesk_update", "target": "message_success" },
    { "source": "message_success", "target": "end_1" }
  ]
}

Saída esperada (ticket aberto):

Sistema: Digite o ID do ticket:
Usuário: 12345
Sistema: Digite seu comentário:
Usuário: Cliente forneceu mais informações sobre o problema
Sistema: Comentário adicionado ao ticket #12345 com sucesso!

Exemplo 3: Monitoramento Automático de Tickets

Objetivo: Verificar periodicamente se um ticket foi resolvido

JSON para Importar

{
  "name": "Monitorar Status do Ticket",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 250, "y": 100 },
      "data": {
        "label": "ID do Ticket",
        "parameters": {
          "variableName": "ticket_monitored",
          "value": "12345"
        }
      }
    },
    {
      "id": "zendesk_1",
      "type": "zendesk",
      "position": { "x": 400, "y": 100 },
      "data": {
        "label": "Buscar Status",
        "resource": "ticket",
        "operation": "get",
        "config": {
          "subdomain": "sua-empresa",
          "email": "admin@empresa.com",
          "apiToken": "seu_token_api"
        },
        "ticketId": "{{ticket_monitored}}",
        "responseVariable": "ticket_status"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 550, "y": 50 },
      "data": {
        "label": "Verificar Resolução",
        "parameters": {
          "conditions": [
            {
              "variable": "ticket_status.status",
              "operator": "equals",
              "value": "solved"
            }
          ]
        }
      }
    },
    {
      "id": "message_resolved",
      "type": "message",
      "position": { "x": 700, "y": 50 },
      "data": {
        "label": "Notificar Resolução",
        "parameters": {
          "message": "🎉 Ótimas notícias!\n\nSeu ticket #{{ticket_monitored}} foi resolvido!\n\n✉️ {{ticket_status.subject}}\n\nSe ainda tiver dúvidas, é só responder!"
        }
      }
    },
    {
      "id": "message_pending",
      "type": "message",
      "position": { "x": 700, "y": 150 },
      "data": {
        "label": "Ainda em Andamento",
        "parameters": {
          "message": "Seu ticket #{{ticket_monitored}} ainda está em atendimento.\n\n📊 Status atual: {{ticket_status.status}}\n⚡ Prioridade: {{ticket_status.priority}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 850, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "zendesk_1" },
    { "source": "zendesk_1", "target": "condition_1" },
    { "source": "condition_1", "target": "message_resolved", "label": "true" },
    { "source": "condition_1", "target": "message_pending", "label": "false" },
    { "source": "message_resolved", "target": "end_1" },
    { "source": "message_pending", "target": "end_1" }
  ]
}

Saída esperada (ticket resolvido):

Sistema: 🎉 Ótimas notícias!

Seu ticket #12345 foi resolvido!

✉️ Problema no checkout

Se ainda tiver dúvidas, é só responder!

Resposta do Node

{
  "id": 12345,
  "subject": "Problema no checkout",
  "description": "Ao finalizar compra, recebo erro de pagamento",
  "priority": "high",
  "status": "open",
  "type": "problem",
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-01-15T14:20:00Z",
  "url": "https://sua-empresa.zendesk.com/api/v2/tickets/12345.json",
  "assignee_id": 67890,
  "requester_id": 54321
}

Boas Práticas

SIM:

  • Valide se o ticketId existe antes de buscar (tratamento de erro)
  • Use responseVariable para armazenar e reutilizar dados do ticket
  • Combine com CONDITION para criar lógica baseada no status
  • Mostre informações relevantes ao cliente (status, prioridade)
  • Cache o resultado se for usar múltiplas vezes no mesmo flow

NÃO:

  • Não exponha todos os dados internos do ticket ao cliente final
  • Não faça GET repetidamente se já tem os dados em variável
  • Não assuma que o ticket existe - sempre trate erro 404
  • Não mostre IDs internos de assignee/requester ao cliente

Dicas

💡 Dica 1: Combine ZENDESK TICKET GET com SWITCH para criar respostas personalizadas baseadas no status do ticket

💡 Dica 2: Use NUMBER node para validar que o usuário digitou um ID numérico válido antes de buscar

💡 Dica 3: Armazene o ticket em variável para evitar múltiplas chamadas à API do Zendesk no mesmo flow

💡 Dica 4: Trate o erro quando ticket não existe - mostre mensagem amigável ao cliente

💡 Dica 5: Use DELAY + LOOP com GET para criar monitoramento automático de tickets (polling)

Próximo Node

ZENDESK TICKET UPDATE - Atualizar ticket existente → ZENDESK TICKET GETALL - Listar todos os tickets → ZENDESK TICKET DELETE - Deletar ticket