Saltar al contenido
API v1 · https://bentho.org/api
POST/api/mod/comprension/{espacio}/comandos

Interpreta un mensaje del cliente

Le das el mensaje que escribió tu cliente y lo que ya sabes de la conversación. Te devuelve hasta cuatro comandos: qué pide (un precio, agregar al carrito, pagar, hablar con una persona…), de qué producto y cuántos. No ejecuta nada: tú decides qué hacer con cada uno.

  • PERMISOlee (vale cualquier clave)
  • CRÉDITOSgasta créditos
  • AUTENTICACIÓNBearer bth_…

PARÁMETROS

CAMPOTIPOREQUERIDOQUÉ ES
espaciostringSÍEl id del espacio (sale en GET /api/companies). Tiene que tener el módulo Comprensión.

CUERPO · JSON

CAMPOTIPOREQUERIDOQUÉ ES
mensajestringSÍLo que escribió el cliente, tal cual. De 1 a 4000 caracteres.
contextoobjectnoLo que ya sabes de la conversación: carrito, productos candidatos, la pregunta que le hiciste… Ver contexto.

RESPUESTA 200

CAMPOTIPOQUÉ ES
comandosarrayDe 0 a 4, en el orden del mensaje. Cada uno, con su tipo y solo los campos que aplican: ver un comando.
schema_versionintegerLa versión del catálogo de comandos. Hoy, 2.
latencia_msintegerLo que tardó, en milisegundos.
errorstring | nullnull si fue bien. Si no se pudo interpretar, comandos llega vacío y aquí va un texto para tus registros: sigue con tu lógica de respaldo.

CONTEXTO

CAMPOTIPOQUÉ ES
candidatos[{ id, nombre, linea? }]Los productos de tu catálogo que pueden ser aquello de lo que habla el cliente, con tu id. Se usan los 12 primeros. Con ellos, cada comando trae producto_id: uno de tus ids, o ? si no es ninguno. linea es opcional: una línea o gama que distinga productos que se llaman igual.
carritostringLo que lleva ya, en texto: «1 × Café Huila molido 250 g».
producto_focostringEl producto del que se está hablando ahora.
pregunta_pendientestringLo último que le preguntaste al cliente. Si el mensaje la contesta, sale responder_pendiente.
dialogostring[]Los últimos turnos, uno por elemento («Cliente: …», «Tú: …»). Se usan los 25 últimos, solo para entender «ese» o «el anterior».
resumenstringUn resumen de la conversación hasta ahora.
destino · metodo_pagostringLa ciudad de envío y el método de pago, si ya los sabes.
tiene_ordenbooleantrue si el cliente ya tiene un pedido creado en esta conversación.
intencion_turno_anteriorstringEl tipo de comando del mensaje anterior. Ayuda con elipsis como «¿y el grande?».
menciones · menciones_ordenadasstringLos productos que nombró antes; en orden, para entender «el primero» o «el segundo».

UN COMANDO

CAMPOTIPOQUÉ ES
tipostringQué pide: ver tipos. Siempre viene.
producto_idstringSolo si mandaste candidatos: el id del producto, o ? si no es ninguno de la lista o el comando no va de un producto.
producto · producto_bstringEl producto con las palabras del cliente; producto_b, el segundo de comparar. Búscalos tú en tu catálogo si no mandaste candidatos.
cantidad_totalintegerLa cantidad final que quiere («ponme dos», «deja una»), de 1 a 1000. En precio puede ser 0: «¿y sin ese, cuánto queda?».
cantidad_extraintegerLo que suma a lo que ya lleva («dos más», «otro»), de 1 a 1000.
unidadesintegerSolo en quitar: cuántas unidades saca. Sin él, quita la línea entera.
solobooleantrue en agregar o cambiar_cantidad cuando pide «solo ese»: lo demás sale.
reemplazastringEn reemplazar: el id del producto que sale. El que entra va en producto_id.
opcionesstring[]En clarify: los ids que casan igual de bien (dos o más). Pregúntale cuál quiere.
referente"carrito" | "foco" | "ultimo_anotado"Señala sin nombrar («eso», «uno más de ese»): a qué apunta. Resuélvelo tú con tu estado.
destinostringLa ciudad de envío que nombra.
metodo"transferencia" | "contra" | "mixto" | "otro"En metodo_pago: contra es contraentrega. otro, un medio que no es ninguno de los tres: trátalo como sin elegir.
respuestastringEn responder_pendiente: lo que contestó («si», «no» o la opción elegida). En vaciar_carrito, «si» si ya lo confirmó en el mismo mensaje.
preguntastringEn responder_docs: la pregunta del cliente, tal cual.

TIPOS DE COMANDO

CAMPOTIPOQUÉ ES
precioproductoPregunta el precio de un producto.
stockproductoPregunta si hay o cuántas unidades quedan.
compararproductoPide la diferencia entre dos productos.
responder_docsinformaciónUna pregunta informativa: uso, contenido, políticas, si le sirve.
ver_catalogoinformaciónPide el catálogo.
agregarcarritoAñadir un producto al carrito.
quitarcarritoQuitar una línea, o unidades de ella.
reemplazarcarritoCambiar un producto del carrito por otro.
cambiar_cantidadcarritoFijar la cantidad de una línea («cambia a 2»).
vaciar_carritocarritoVaciarlo y empezar de cero.
ver_carritocarritoPregunta qué lleva.
cotizar_enviopedidoPide el valor del envío, o el total, a una ciudad.
desglosepedidoPide el detalle de su pedido línea a línea.
objecion_preciopedidoCuestiona una cifra: «¿por qué tanto?», «muy caro».
cerrar_pedidopedidoConfirma la compra o quiere pagar.
metodo_pagopedidoElige o pregunta el método de pago.
estado_pagopedidoPregunta por su pago o su pedido.
datos_despachopedidoDa o pregunta datos de entrega.
cancelarpedidoCancela el pedido.
responder_pendienteconversaciónContesta a lo que le preguntaste (pregunta_pendiente).
clarifyconversaciónNombró algo que casa con varios candidatos: mira opciones y pregúntale cuál.
saludo · despedidaconversaciónSaluda o se despide.
pedir_humanoconversaciónQuiere hablar con una persona.
otroconversaciónNada de lo anterior.

ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}

STATUSCUÁNDODETAIL LITERAL
403El espacio no tiene el módulo Comprensiónmódulo no habilitado para este espacio.
402La cuenta agotó sus créditos del cicloLa cuenta de este espacio agotó sus créditos de este ciclo.
422Falta mensaje, o pasa de 4000 caracteres (detail es una lista)—

Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.

CONVIENE SABER

  • Vale con cualquier clave, también la de solo lectura: interpretar no cambia nada del espacio. Gasta créditos de la bolsa, como una pregunta.
  • No guarda nada entre llamadas: ni carrito ni historial. Lo que quieras que tenga en cuenta, mándalo en contexto cada vez.
  • Con candidatos, el id que devuelve siempre es uno de los tuyos (o ?): no se inventa productos. Sin ellos, solo trae producto con las palabras del cliente.
  • Si la interpretación falla, responde 200 con comandos vacío y error: no es un 5xx. Tu conversación sigue; responde con tu lógica de siempre.