Guia de configuração manual
Guia de Configuração Manual — Respond.io (Luana 3.0)
Este documento descreve tudo que precisa ser configurado manualmente no painel do Respond.io, fora do código. A parte técnica (edge functions, KBs, tools HTTP, webhooks) já está entregue nas Fases 1 e 2 do plano.
Ordem recomendada de execução: Contact Fields → Tags → Lifecycle Stages → AI Agents → Workflows. Faça primeiro no canal MG (
489695) como piloto; só replique pro SP (480178) depois de 48h estável.
0. Pré-requisitos
- Subdomínio
kb-respondio.clinicasinstitutosaude.com.brrespondendo HTML (Fase 1, item 1). - Secret
RESPOND_IO_API_TOKENconfigurado no Supabase. - Whitelist dos IPs do Respond.io no Cloudflare WAF:
52.74.35.155,18.138.31.163,54.169.155.20. - Acesso de Owner no workspace Respond.io.
1. Contact Fields (23 campos)
Settings → Contact Fields → Add Field.
| # | Nome interno | Label | Tipo | Observação |
|---|---|---|---|---|
| 1 | cpf |
CPF | Text | 11 dígitos, sem pontuação |
| 2 | nome_completo |
Nome completo | Text | — |
| 3 | data_nascimento |
Data nascimento | Date | DD/MM/AAAA |
| 4 | cidade_paciente |
Cidade | Text | usada pelo Receptionist |
| 5 | estado_paciente |
UF | Text | 2 letras |
| 6 | canal_origem |
Canal de origem | Text | 489695/480178/etc |
| 7 | unidade_preferida_id |
Unidade preferida (UUID) | Text | — |
| 8 | proximo_agendamento_id |
Próx. agendamento (UUID) | Text | populado por webhook |
| 9 | proximo_agendamento_data |
Próx. agendamento data | Date | — |
| 10 | proximo_agendamento_servico |
Próx. agendamento serviço | Text | — |
| 11 | proximo_agendamento_unidade |
Próx. agendamento unidade | Text | — |
| 12 | proximo_agendamento_medico |
Próx. agendamento médico | Text | — |
| 13 | proximo_agendamento_status |
Status próx. agendamento | Text | confirmado/pendente/cancelado |
| 14 | proximo_agendamento_pagamento |
Pagamento próx. agendamento | Text | pago/pendente |
| 15 | proximo_agendamento_confirmacao |
Confirmação próx. agendamento | Text | sim/nao/null |
| 16 | laudo_disponivel |
Laudo disponível | Text | sim/nao |
| 17 | laudo_link_recente |
Link laudo recente | Text | URL portal |
| 18 | laudo_data_recente |
Data laudo recente | Date | — |
| 19 | nf_disponivel |
NF disponível | Text | sim/nao |
| 20 | nf_numero |
Número NF | Text | — |
| 21 | nf_status |
Status NF | Text | emitida/pendente/erro |
| 22 | nf_link |
Link NF | Text | |
| 23 | nf_data_emissao |
Data emissão NF | Date | — |
⚠️ Os nomes internos devem ser exatamente esses (snake_case), porque os webhooks
respond-io-webhook-*já populam por esses keys viacustomFields.
2. Tags (~30 tags)
Settings → Tags → Add Tag. Use prefixo id: quando a tag dispara automações (memory respond-io/automated-tagging-logic).
Tags de fluxo (workflow router)
id:agendamento-pendenteid:agendamento-confirmado-respondid:reagendamento-tentativa-2id:reagendamento-tentativa-3id:avaliacao-pos-consultaid:cobranca-2h,id:cobranca-6h,id:cobranca-18hid:dados-pendentes-nf
Tags de saída (Luana → handoff)
PedidoHumano,Urgencia,AgendamentoParaHumanoConfirmado,Cancelado,ConfirmaCancelaSemTagAceitouReagendamento,RecusouReagendamento,PediuOutroHorarioSemResposta,RecusouAgendar,DespediuAudioRecebido,MencaoHorarioPacienteOutroEstado,ServicoNaoOferecido
Tags de IA (roteamento entre os 5 agents)
ia:receptionist,ia:pre-consulta,ia:pos-consulta,ia:financeiro,ia:laudo
Veja
KB_TAGS_SAIDA.mdeKB_FECHAMENTO_CADENCIA.mdpara a semântica completa.
3. Lifecycle Stages (5 estágios)
Settings → Lifecycle Stages → ordem importa.
Etapas do ciclo de vida (configuração real em produção)
| Ordem | Stage | Ícone | Descrição | Entrada automática |
|---|---|---|---|---|
| 1 | Lead | 😊 | Primeiro contato, ainda não foi ofertado horário. | Default ao criar contato (Conversation Opened). |
| 2 | Ofertado horário | 📅 | Luana já enviou opções de horário, aguardando escolha. | Tool respond-io-horarios executada com sucesso. |
| 3 | Agendado | ✅ | Tem agendamento confirmado no Supabase. | Webhook respond-io-webhook-agendamento (trigger SQL em agendamentos INSERT). |
| 4 | Em Atendimento | 😊 | Compareceu ou está em consulta hoje. | Cron diário W7 às 00:00 (move agendamentos do dia). |
| 5 | Inativo | ❤️ | Sem interação 180+ dias e sem agendamento futuro. | Cron mensal W7. |
| 6 | Pós-Consulta (Venda Fechada) | 😎 | Atendimento concluído, aguardando avaliação/laudo/NF. | Webhook quando status = compareceu. |
Etapas de perda
| Stage | Ícone | Quando usar |
|---|---|---|
| Deseja convênio apenas | 🧊 | Paciente recusa atendimento particular (Luana detecta menção a "convênio/plano" + recusa). Tag RecusouAgendar + id:convenio-apenas. |
| Não quis oferta | ❌ | Paciente recusou o slot oferecido sem pedir reagendamento. Tag RecusouAgendar. |
Importante: Respond.io só permite setar Lifecycle Stage via Workflow Step "Update Lifecycle Stage", não direto via API REST. Por isso o webhook envia uma tag
id:*e o Workflow correspondente faz a mudança de stage.
4. AI Agents (5 IAs)
Settings → AI Agents → Create Agent. Para cada um:
- Model:
gpt-4o(ouclaude-3.5-sonnetse preferir). - Temperature:
0.3(financeiro/laudo) ou0.5(receptionist/pré/pós). - System Prompt: colar conteúdo de
src/content/respondio/INSTRUCOES_LUANA_*.mdcorrespondente. - Knowledge Source: URL única →
https://kb-respondio.clinicasinstitutosaude.com.br/(página índice). O crawler indexa as 16 KBs automaticamente. - Tools: habilitar as edge functions abaixo via "Add Custom Tool" (config detalhada em
docs/RESPOND_IO_AGENTE_HTTP.md).
4.1 Receptionist (MG e SP — agent por canal)
- Prompt:
INSTRUCOES_LUANA_MG.md/INSTRUCOES_LUANA_SP_INTERIOR.md - Tools:
respond-io-contexto-canalrespond-io-unidadesrespond-io-servicosrespond-io-horariosrespond-io-agendarrespond-io-checar-oferecimentorespond-io-buscar-paciente
4.2 Pré-Consulta
- Prompt:
INSTRUCOES_PRE_CONSULTA.md(criar com base no §C.2 do doc mestre) - Tools:
respond-io-consultar-meu-agendamentorespond-io-confirmar-agendamentorespond-io-buscar-paciente
4.3 Pós-Consulta
- Prompt: trigger por tag
id:avaliacao-pos-consulta; coleta nota 1–5. - Tools: nenhuma (só envia link
/a/{token}gerado pelo webhook).
4.4 Financeiro
- Prompt: trata cobranças pendentes e dados de NF.
- Tools:
respond-io-consultar-nfrespond-io-buscar-paciente
4.5 Laudo
- Prompt: entrega link de laudo / orienta retirada.
- Tools:
respond-io-consultar-laudorespond-io-buscar-paciente
5. Workflows (8 workflows)
Workflows → New Workflow.
W1 — Router de Entrada
- Trigger: Conversation Opened.
- Lógica: lê tags
id:*e Lifecycle Stage para rotear para o agent certo.- Tem tag
id:cobranca-*ouid:dados-pendentes-nf→ Financeiro. - Tem tag
id:agendamento-pendenteouid:agendamento-confirmado-respond→ Pré-Consulta. - Tem tag
id:avaliacao-pos-consulta→ Pós-Consulta. - Mensagem contém "laudo"/"resultado" → Laudo.
- Caso contrário → Receptionist (por canal).
- Tem tag
W2 — Cadência (sem resposta)
- Trigger: Conversation Idle 30min / 60min / 90min.
- Ações: envia lembrete ou fecha (
!Finalizarconversa+ tagSemResposta). - Referência:
KB_FECHAMENTO_CADENCIA.md.
W3 — Webhook Agendamento Criado
- Trigger: Incoming Webhook (URL pública do workflow).
- Origem: trigger SQL via
pg_netemagendamentos(INSERT) chamarespond-io-webhook-agendamento, que por sua vez chama o webhook do Respond.io após popular Contact Fields. - Ações: muda Lifecycle →
Agendado; adiciona tagid:agendamento-pendente.
W4 — Webhook Consulta Finalizada
- Trigger: Incoming Webhook.
- Origem: trigger em
agendamentosquandostatus = compareceu. - Ações: Lifecycle →
Pós-Consulta; adiciona tagid:avaliacao-pos-consulta; aguarda 2h; dispara fluxo NPS.
W5 — Webhook Cancelamento
- Trigger: Incoming Webhook.
- Origem: trigger em
agendamentosquandostatus = cancelado. - Ações: adiciona tag
Cancelado; dispara cadência de reagendamento (T+24h e T+72h via cron).
W6 — Webhook Avaliação (NPS)
- Trigger: Incoming Webhook.
- Origem: edge function
nps-pre-link-respondio(memory já existente). - Ações: envia mensagem com
/a/{token}; remove tagid:avaliacao-pos-consultaapós resposta.
W7 — Cron Diário (00:00)
- Trigger: Schedule diário.
- Ações:
- Move contatos com agendamento hoje → Lifecycle
Em Atendimento. - Move contatos sem interação 180d → Lifecycle
Inativo. - Dispara cobranças
id:cobranca-2h,id:cobranca-6h,id:cobranca-18hconforme regra de tempo do agendamento.
- Move contatos com agendamento hoje → Lifecycle
W8 — Bridge (KB fallback)
- Trigger: AI Agent retornou "não sei" 2x consecutivas.
- Ações: handoff humano + tag
PedidoHumano+ comentário interno com últimas 5 mensagens.
6. Templates Meta (aprovação prévia obrigatória)
Submeter no Meta Business Manager → WhatsApp → Templates:
| Nome | Categoria | Idioma | Uso |
|---|---|---|---|
cobranca_2h |
UTILITY | pt_BR | Lembrete 2h antes |
cobranca_6h |
UTILITY | pt_BR | Confirmação 6h antes |
cobranca_18h |
UTILITY | pt_BR | Pré-confirmação noite anterior |
pendencias_dados_nf |
UTILITY | pt_BR | Coletar dados pendentes (memory existente) |
reagendamento_tentativa |
UTILITY | pt_BR | Oferecer novo slot |
avaliacao_nps |
MARKETING | pt_BR | Link NPS pós-consulta |
Regras de sanitização: sem
\t,\nduplicado, ou caracteres invisíveis (memorywhatsapp-template-sanitization-rules).
7. Triggers SQL (pg_net → webhooks Respond.io)
Criados no Supabase (não no Respond.io), mas listados aqui para visibilidade. Pendente — Fase 3.
-- pseudo, ainda não aplicado
CREATE TRIGGER trg_agendamento_to_respondio
AFTER INSERT OR UPDATE OF status ON agendamentos
FOR EACH ROW EXECUTE FUNCTION call_respond_io_webhook();
Funções alvo: respond-io-webhook-agendamento, respond-io-webhook-laudo, respond-io-webhook-nf.
8. Checklist final de go-live (canal MG primeiro)
- Todos os 23 Contact Fields criados com nomes internos exatos.
- Todas as ~30 Tags criadas (com prefixo
id:onde aplicável). - 5 Lifecycle Stages na ordem correta.
- 5 AI Agents criados, prompts colados, knowledge source apontando para
kb-respondio.*. - Tools HTTP testadas via
curldireto antes de plugar no agent. - 8 Workflows ativos (W1–W8).
- 6 templates Meta aprovados.
- Triggers SQL ligados em
agendamentos/notas_fiscais. - Observabilidade
/admin/respond-io/observabilidademostrando eventos chegando. - Versionamento de prompts
/admin/respond-io/prompt-versionspopulado com versãov1ativa.
9. Rollback rápido
Se algo quebrar em produção:
- AI Agent alucinou: vá em
/admin/respond-io/prompt-versions, ative versão anterior. - Tool retornando erro: desative a tool no agent (Settings → Tools → toggle off); Luana volta a usar só KB.
- Workflow disparando demais: Workflows → toggle off no W problemático.
- KB indexação errada: ative
kb_active_versionapontando para snapshotvYYYYMMDDantigo.
Documento vivo. Atualize ao adicionar novos Contact Fields, Tags ou Workflows.