Skip to main content

Reintentos sin cobros dobles

Manda una Idempotency-Key única en cada POST .../chat:
Si la petición se corta por un timeout y reintentas con la misma clave, devolvemos la respuesta original sin volver a cobrar. La respuesta repetida llega con la cabecera Idempotent-Replay: true. Genera un UUID por intención del cliente, no por intento de red: si cambias la clave en el reintento, será una llamada nueva y se cobrará.

Agrupa los mensajes

Espera 1-2 segundos antes de llamar y junta lo que el cliente haya escrito en ese hueco. Mejora la respuesta y te ahorra créditos.

Vigila los créditos

Comprueba GET /v1/yo a diario y avisa a tu equipo por debajo del 10%. Un 402 es un cliente sin respuesta.

Lista antes de lanzar

1

La clave vive en el servidor

En variables de entorno, nunca en el repositorio ni en el cliente.
2

Integrado con bk_test_

Y probado el camino de error, no solo el feliz.
3

Idempotency-Key en cada chat

Es lo que te protege de cobrar dos veces.
4

Reintentos solo en 5xx

Con espera creciente.
5

Aviso de créditos bajos

Antes de llegar al 402, no después.
6

Los negocios están activos

Un negocio en pendiente devuelve 409.

Timeouts

El agente puede tardar unos segundos: consulta el calendario y a veces varios modelos. Pon el timeout de tu cliente HTTP en 60 segundos. Por debajo de 30 vas a cortar respuestas que iban a llegar bien.

Qué no hacer

  • No llames desde el navegador. Expone tu clave.
  • No reintentes los 4xx. Fallarán igual y gastas tiempo.
  • No dependas del texto de mensaje. Puede cambiar; usa codigo.
  • No guardes conversaciones que no necesites. Son datos personales de los clientes de tu cliente, con lo que eso implica en RGPD.