O CRUD Conversacional permite executar operações de formulário usando etapas encadeadas. Em geral, você gera o plano com reasonFormFlowPlan e acompanha a execução step a step.

Antes de criar variáveis ou catálogos, consulte o que já existe com getFormFields e getFormCatalogs. Isso evita duplicatas e garante que o escopo (lead, conversation, global, form) seja atribuído corretamente.

Para que serve

  • Criar e atualizar formulários sem montar chamadas manuais complexas
  • Reaproveitar resultados de uma etapa na próxima
  • Exibir progresso operacional para usuários e times internos

Ações disponíveis

Mutações

AçãoDescrição
createCatalogCria um novo formulário
updateCatalogAtualiza formulário existente
createVariableCria uma nova variável
updateVariableAtualiza variável existente
createFormFieldAdiciona campo a um formulário
updateFormFieldAtualiza campo de formulário
upsertFormItemValueInsere ou atualiza um valor capturado
upsertFormResponseInsere ou atualiza uma resposta de formulário
createFormItemResponseCria snapshot de resposta

Queries

AçãoDescrição
queryFormCatalogsLista formulários do host
queryFormVariablesLista variáveis do host
queryFormFieldsLista campos de um formulário
queryFormItemsValuesBusca valores capturados
queryFormResponsesBusca respostas de formulários
queryFormItemsResponsesBusca snapshots de respostas

Validação

AçãoDescrição
validateStepResultValida o resultado de uma etapa anterior antes de continuar

Referências dinâmicas

Use $previous para aproveitar a saída da etapa anterior:

ReferênciaO que acessa
$previousObjeto completo do resultado anterior
$previous.idCampo id do resultado anterior
$previous.campoQualquer campo do resultado anterior
$previous[0].idPrimeiro elemento quando o resultado é um array

Exemplo: criar catálogo e logo depois associar uma variável ao ID gerado:

[
  {
    "stepNumber": 1,
    "action": "createCatalog",
    "generalInstructions": "Criar formulário Pré-vendas"
  },
  {
    "stepNumber": 2,
    "action": "updateCatalog",
    "generalInstructions": "Associar variáveis ao formulário criado",
    "params": {
      "catalogId": "$previous.id",
      "variableIds": ["uuid-email", "uuid-phone"]
    }
  }
]

Validação por etapa

Steps com requiresValidation: true são verificados automaticamente antes de prosseguir:

{
  "stepNumber": 1,
  "action": "createCatalog",
  "generalInstructions": "Criar formulário de pré-vendas",
  "requiresValidation": true,
  "validationQuestion": "O formulário foi criado corretamente?",
  "validationInstructions": "Verificar se o ID retornado é válido e o nome está correto"
}

realtimeInstructions

Durante a execução, cada step pode gerar mensagens em realtimeInstructions para orientar interface e operador:

{
  "stepNumber": 1,
  "action": "createCatalog",
  "result": { "id": "abc-123", "name": "Pré-vendas" },
  "realtimeInstructions": [
    "✅ Formulário criado com sucesso!",
    "📋 ID gerado: abc-123",
    "📝 Nome: Pré-vendas"
  ]
}

Essas mensagens funcionam bem junto com o evento form_flow_step_executed para mostrar progresso em tempo real.