Encantra Care — Suporte (lado do agente)

Módulo app/Modules/Support · migração 100_support.sql · seed demo_support.php.
Base de conhecimento, central de ajuda, portal do cliente e chat ficam no módulo Portal.

Funcionalidades

  • Caixa de entrada (/app/support/tickets): visões Meus, Não atribuídos, Abertos, SLA em risco, Resolvidos e Todos; filtros por prioridade, canal, responsável, time, conta e tag; busca por assunto, #número, cliente ou conta; ordenação por SLA; ações em massa (atribuir, status, prioridade, time, tag).
  • Ticket (/app/support/tickets/{id}): conversa com mensagens do cliente, do agente, notas internas e respostas da Lumi; composer com resposta pública/nota, macros e status após envio; propriedades editáveis; timers de SLA; perfil do cliente com conta e saúde; painéis de outros módulos (contact.panels); tickets relacionados; atividade; mesclagem.
  • Lumi (IA): triagem automática (categoria, tipo, prioridade, sentimento, idioma, resumo, tags e time sugerido), sugestão de resposta com RAG na base de conhecimento e citações, resumo do caso, reescrita (tom, gramática, tradução) e resposta automática com limite de confiança.
  • Automações “quando → se → então”: gatilhos ticket criado, após triagem, resposta do cliente, mudança de status e SLA violado; 16 campos de condição; ações de status, prioridade, tipo, categoria, tags, time, agente, round-robin balanceado, notificações, e-mail ao cliente, nota interna e resposta automática da Lumi.
  • SLA por prioridade com horário comercial, dias úteis e fuso; verificação a cada 5 min (support.sla_check), notificações e evento ticket.sla_breached.
  • Macros com variáveis {{cliente}}, {{ticket.number}}, {{ticket.subject}}, {{empresa}} e ações.
  • CSAT: e-mail com carinhas 1–5 ao resolver, página pública /csat/{token}, comentário opcional, evento csat.received.
  • Canais: e-mail (saída com Reply-To e Message-ID rastreável; entrada por webhook POST /hooks/email/{token} ou IMAP opcional a cada 2 min) e WhatsApp Cloud API (/hooks/whatsapp/{token} com verificação e assinatura X-Hub-Signature-256).
  • Relatórios (/app/support/reports): volume diário, canais, categorias, backlog, 1ª resposta e resolução medianas, % SLA, CSAT, taxa de resolução pela IA e ranking do time.
  • API REST /api/v1/tickets (escopo tickets): GET lista (filtros status, priority, channel, contact_email, account_external_id, updated_since), POST cria, GET /{id}, POST /{id}/messages, PATCH /{id}.

Contrato para outros módulos (TicketService)

TicketService::create(['subject', 'body', 'channel', 'contact_id' | 'contact_email' (+ 'contact_name'), 'account_id'?, 'priority'?, 'type'?, 'tags'?, 'custom'?, 'author_type'?, 'user_id'?, 'source_message_id'?]): int
TicketService::addMessage(int $ticketId, ['body', 'author_type', 'user_id'?, 'contact_id'?, 'visibility'?, 'channel'?, 'status'?]): int
TicketService::update(int $ticketId, array $changes): array
TicketService::findOrCreateContact(string $email, ?string $name = null): int
TicketService::listForContact(int $contactId): array
TicketService::getForContact(int $ticketId, int $contactId): ?array   // ticket + mensagens públicas

Eventos

Emitidos: ticket.created, ticket.replied, ticket.status_changed, ticket.solved, ticket.assigned, ticket.updated, ticket.sla_breached, csat.received, contact.created.
Ouvidos: tenant.created (cria time Geral, SLA padrão, canal de e-mail, automações e macro iniciais) e os eventos de ticket (motor de automações).

Hooks fornecidos

app.home, search, contact.panels, account.panels, account.tabs, account.signals (support.open_tickets, support.tickets_30d, support.sla_breaches_30d, support.csat_90d), usage.meters (tickets_month, agents), settings.sections.


Encontrou algo para melhorar? Escreva para master@inspire4u.com.br.