Este endpoint permite cerrar la última conversación atendida por un agente humano (HITL) en Botpress y devolver el control de la interacción al bot.
Descripción general
El flujo se basa en identificar la conversación HITL asociada a una conversación de origen (WhatsApp, Instagram, Messenger, etc.), obtener el ticketId correspondiente y notificar a Botpress que el ticket fue resuelto.
Endpoint
POST
https://suricata1.com.ar/api/close-conversation
Flujo del proceso
Obtiene la configuración de Botpress del merchant desde base de datos.
Usa el conversation_id del canal origen para consultar la conversación en Botpress.
Extrae el tag downstream, que contiene el ID de la conversación HITL.
Consulta la conversación HITL para obtener el ticketId desde un tag específico.
Llama al webhook de Botpress para indicar que el ticket fue resuelto.
Devuelve una respuesta JSON indicando éxito o error, con códigos HTTP adecuados.
Parámetros de entrada
El endpoint recibe los siguientes parámetros vía request:
Parámetro
Tipo
Descripción
merchant
string
Prefijo del merchant (sanitizado)
conversation_id
string
ID de la conversación origen (WhatsApp, Instagram, Messenger, etc.)
Dado un conversation_id de origen, obtiene la conversación correspondiente en Botpress, extrae el tag downstream y devuelve el ticketId asociado a la conversación HITL.
Parámetros
Parámetro
Tipo
Descripción
conversation_id
string
ID de la conversación origen
bot_id
string
Identificador del bot utilizado en las llamadas a Botpress
Flujo
Consulta la conversación origen en Botpress.
Extrae el objeto conversation si la respuesta viene envuelta.
Obtiene el valor del tag tags.downstream.
Si el tag downstream no existe:
Retorna un error en formato JSON.
Espera breve (sleep(2)).
Llama a getTicketId(downstream, bot_id).
Valida que el ticketId sea escalar y no vacío.
Retorna el ticketId.
Respuestas / Errores
string: Ticket ID válido.
JSON error (500):
Error al consultar la API de Botpress.
No se encuentra el tag downstream.
No se puede obtener el ticketId.
Nota
Este método puede retornar tanto valores escalares (ticketId) como respuestas JSON de error.
El método llamador debe manejar ambos escenarios.