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:
- Consulta de Status: Permitir que clientes verifiquem o andamento do ticket
- Verificação de Dados: Obter informações antes de atualizar ou processar
- Acompanhamento Automatizado: Verificar se tickets foram resolvidos ou precisam ação
- 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:
- Valida Credenciais: Verifica subdomain, email e API token do Zendesk
- Substitui Variáveis: Processa ticketId com valores do contexto
- Cria Cliente HTTP: Configura autenticação Basic Auth
- Faz Request GET: Busca ticket em /api/v2/tickets/{id}.json
- Se ticket não existe: Retorna erro 404
- Se sucesso: Retorna objeto ticket completo
- 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
- Consulta de Status: "Cliente pergunta 'qual o status do meu ticket #12345?'"
- Verificação Antes de Atualizar: "Buscar ticket antes de adicionar comentário"
- 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