Kala × Callbook · Configuración técnica

Cómo conectamos el agente conversacional con la API de Kala

Metodología de trabajo para unificar el prompt de Alejandra Martínez (cobranzas de voz) con los endpoints de Kala: qué endpoint usar, cómo, en qué momento de la llamada, y el árbol de decisiones que enlaza el guion con cada llamada a la API.

Asistente: Alejandra MartínezAPI: Kala–Callbook Integration v1.0Entorno QA: preprod-claro.thirdparty.api.kalaplatform.techProducción: TBD (bloqueada por NDA)
§ 01

Arquitectura: dos bloques, no uno

La decisión de diseño clave. El RFP exige latencia voz-a-voz < 800 ms, así que separamos las llamadas pesadas del turno conversacional.

Tarjeta Abatch

"Antes de marcar" · Pre-call enrichment

Se ejecuta en el nodo de enriquecimiento (n8n) antes de la llamada. Llena todas las variables del prompt. El asistente arranca ya sabiendo quién es y cuánto debe.

  1. 1.
    POST /v2/authtoken + organizationId
  2. 2.
    GET identificationtransactionId
  3. 3.
    GET applicantnombre y contacto
  4. 4.
    GET loan/customerlista de obligaciones
  5. 5.
    GET pastdue/latestdías de mora → variante de prompt
  6. 6.
    POST debt_calculatormonto de salida de mora
Tarjeta Btiempo real

"Durante / después" · Tool-calls en vivo

Solo lo que depende de la conversación. Se mantiene al mínimo para no comprometer la latencia del turno.

  1. 1.
    Negociación
    POST debt_calculator si el cliente pide recalcular a otra fecha
  2. 2.
    Cierre
    POST certificate_base_payment (total o parcial) con el monto y fecha acordados
  3. 3.
    Cierre
    GET certificate → PDF Base64 → enviar por el canal acordado
  4. 4.
    Post-llamada
    Tipificación y promesa de pago → sin endpoint (gap §5)gap
§ 02

Inventario de endpoints

0 endpoints agrupados por la pregunta de negocio que responden. Todos (menos auth) usan Authorization: Bearer {token} + header x-juno-organizationid.

#MEndpointPropósitoDevuelveEstado
1POST/v2/authLogin del usuario de sistema → token (JWT 60 min)token, idsLender[]500 bloqueado
2GET/v2/person/identification/{doc}/{tipo}/transaction¿Quién es? Transacción activa por documentotransactionId, amount, statusrequiere auth
3GET/v2/person/transaction/{id}/applicantDatos del titularfirstName, email, mobileNumberrequiere auth
4GET/loan/customer/{id}¿Cuánto debe? Obligaciones del clienteloanId[], loanNumber, loanTypeNamerequiere auth
5GET/pastdue/loan/{loanId}/latestPosición de mora más recientedaysPastDue, amountToInstalmentrequiere auth
6POST/private/projection/debt_calculator¿Cuánto paga para salir de mora? Simulación (MORA_CURE)projection.totalPaymentrequiere auth + rol
7GET/loan/projections/customer/{id}Proyecciones aptas para certificadoprojectionIds[]requiere auth
8POST/projection/projections/certificate_base_paymentCertificado de deuda total (PDF, 10 días)certificateNumberrequiere auth
9POST/projection/partial/certificate_base_paymentCertificado parcial (monto negociado, ≤ 30 días)certificateNumberrequiere auth
10GET/projection/certificate_base_payment/{n}PDF del certificado en Base64string Base64 → WhatsApp/correorequiere auth
11POST/v2/customer/validate-incorporation-dateVerificación de identidad reforzadaisMatchopcional
12GET/v2/customer/{id}/first-namePrimer nombre para el saludoprimer nombreopcional
13POST/debt-clearancePaz y Salvo (préstamos cerrados) — fuera de moraPDF Base64fuera de alcance
14POST/projectionCrear proyección si no existe (previo al cert. total)body sin documentar
§ 03

En qué momento se llama cada endpoint

Mapeo de los endpoints a las fases de la conversación.

§ 04

Árbol de decisiones: guion ⇄ endpoints

Cada rama del diálogo y qué llamada a la API dispara. ■ verde = funciona con auth; ■ ámbar = decisión de negocio; ■ rojo = gap sin endpoint.

Pre-call: auth + datos + mora
¿Transacción / crédito activo?
Marcar sin crédito activo — NO llamar
¿Días de mora?
Prompt mora temprana (1–10)
Prompt actual (1–30)
Prompt mora tardía (+30)
¿Es el titular?
Despedir — wrong-party
"Ya pagué" — sin verificación
POST debt_calculator (recalcular)
Cascada de negociación por obligación
Cliente propone monto/fecha
¿Acuerdo válido?
Redirigir a monto/fecha máxima
¿Tipo de pago?
Sin acuerdo — guion de consecuencias
GET projections → POST /projection → cert total
POST cert parcial (partial + maxDate)
GET certificate → PDF Base64 → enviar
Registrar promesa de pago — SIN ENDPOINT (gap)

La cascada de negociación asume hoy 2 obligaciones (Kala + KOALA); el RFP contempla hasta 9 — debe volverse dinámica sobre la lista loanId[].