DOCS

Controle Fluxo de Chatbot Webhook

Metodo HTTP chamado pelo node Requisicao HTTP (Delegar) durante a execucao do fluxo de chatbot. O endpoint externo recebe a mensagem atual, os dados do canal e o objeto vars com as variaveis ja persistidas no contexto do fluxo. O retorno deve ser um JSON com: - messages: mensagens que a plataforma deve enviar ao contato. - keepHere: true para manter a conversa neste endpoint e aguardar nova mensagem; false para avancar para a saida do node. - vars: objeto com todas as variaveis que precisam ser salvas no contexto do fluxo antes de avancar. Importante: somente campos dentro de vars sao persistidos e ficam disponiveis para os proximos nodes. Campos retornados no topo do JSON nao sao usados por nodes que leem variaveis nem por templates. Exemplo: se o proximo node avalia uma variavel de decisao, retorne essa chave dentro de vars. Se um node usa templates como {{nome}}, {{produto}} ou {{observacao}}, esses campos tambem devem ser retornados dentro de vars.

Desenvolvedor

Evento

POST messenger/chatbot/NodeHttpDelegate

Como receber

Configure uma URL HTTPS pública para receber este evento e responda rapidamente com status de sucesso após aceitar o payload.

Código de exemplo

Consulte app.js para ver uma implementação de referência.

Payload

  • Content-Type: application/json
CampoTipoObrigatórioValores / ExemploDescrição
seqintegerSimSequência da mensagem no fluxo atual
roomIdstringNãoID da sala de conversa atual
chIdstringNãoIdentificador do contato no canal
chSrcintegerNãoCanal de origem (1=WhatsApp, 2=Facebook, 3=Instagram, 4=SMS; ausência/valor diferente indica LiveChat)
messagestring,nullNãoTexto enviado pelo contato na mensagem atual, quando houver
varsobjectSimVariáveis já persistidas no contexto do fluxo. O endpoint pode usar esses valores para decidir a resposta e deve retornar novas variáveis em response.vars.
interactiveReplystringNãoResposta interativa do usuário
currNodeIdstringNãoID do node atual no fluxo

Estruturas internas

vars

{
  "room": "object",
  "SAMPLE_VAR": "string"
}

Exemplo básico recebido:

{
  "seq": 1,
  "vars": {
    "room": {},
    "SAMPLE_VAR": "valor"
  }
}

Respostas

StatusDescriçãoConteúdo
200Retorno do controle do fluxoapplication/json
500Erro no processamento

Payload esperado no retorno

Quando a resposta declarar um corpo JSON, retorne o payload abaixo para que a plataforma consiga continuar o processamento do evento.

Status 200 - Retorno do controle do fluxo

  • Content-Type: application/json
CampoTipoObrigatórioValores / ExemploDescrição
messagesNodeHttpDelegateMessageNãoLista de mensagens a serem enviadas para o contato
keepHerebooleanNãoIndica se o processamento continua neste endpoint ou avança para o próximo passo do fluxo na plataforma
varsobjectNãoVariáveis que serão salvas em roomData.vars e usadas pelos próximos nodes. Use este campo para qualquer variável avaliada por nodes condicionais e para qualquer dado referenciado em templates (ex.: null, null, null). Campos fora de vars não são persistidos.

Estruturas internas

messages

[
  {
    "text": "string",
    "file": {
      "mimetype": "string",
      "fileUrl": "string (uri)"
    },
    "buttons": "object"
  }
]

vars

{
  "acao": "string",
  "contexto": "object",
  "nome": [
    "string",
    "null"
  ],
  "produto": [
    "string",
    "null"
  ],
  "observacao": [
    "string",
    "null"
  ]
}

Exemplo básico de retorno:

{
  "messages": [
    {
      "text": "Recebi suas informações e vou dar continuidade ao atendimento."
    }
  ],
  "keepHere": false,
  "vars": {
    "acao": "continuar_atendimento",
    "nome": "Cliente",
    "produto": "Produto de interesse",
    "observacao": "Resumo da necessidade informada pelo contato.",
    "contexto": {
      "origem": "integracao_externa",
      "prioridade": "alta"
    }
  }
}

Boas práticas

  • Trate reenvios como possibilidade real.
  • Valide o payload antes de executar regras de negócio.
  • Registre o identificador do evento ou do registro recebido para auditoria.