Callsistdocs
Guías

Redacción de PII

Qué detecta, cómo se tapa y por qué el texto de primer nivel sigue en claro.

Se pide dentro de understanding:

{ "pii_redaction": { "entities": ["person", "phone", "nif"], "policy": "entity_name" } }

Produce dos cosas. En understanding.pii_redaction, lo detectado:

{ "entities": [ { "type": "person", "text": "Marta Ejemplo" }, { "type": "phone", "text": "600 000 000" } ] }

Y en la clave pii de primer nivel, el texto ya tapado:

{
  "policy": "entity_name",
  "text_redacted": "…me llamo [NOMBRE] y mi teléfono es [TELEFONO]…",
  "entities": [ "…" ],
  "utterances_redacted": [ { "speaker": "0", "speakerRole": "customer", "text": "…[NOMBRE]…" } ]
}

pii vale null si no se pidió el módulo o si no se detectó ninguna entidad.

La trampa que hay que leer entera

text y utterances de primer nivel NUNCA se redactan. Siguen en claro aunque actives la redacción.

Es deliberado: quien no pide redacción quiere su transcripción entera. Pero significa que si la pides y sigues leyendo text, estás procesando datos personales en claro creyendo que no.

{
  "text": "Me llamo Marta Ejemplo y mi DNI es 00000000T",   // ⚠ en claro, siempre
  "pii": {
    "text_redacted": "Me llamo [NOMBRE] y mi DNI es [DNI]",  // ✅ esto es lo que hay que usar
    "utterances_redacted": [ "…" ]
  }
}

Qué hacer: en cuanto pii !== null, usa pii.text_redacted y pii.utterances_redacted y no vuelvas a mirar text ni utterances.

const texto  = t.pii ? t.pii.text_redacted       : t.text;
const turnos = t.pii ? t.pii.utterances_redacted : t.utterances;

Tipos y marcadores

Tipos canónicos (type): person, phone, email, iban, card, nif, address, date_of_birth, license_plate, medical.

El modelo puede contestar «DNI» o «Teléfono» en el idioma de la llamada; se normalizan aquí, y lo que no encaja en la lista se descarta.

Marcadores según policy:

policyResultado para «Marta Ejemplo»
entity_name (defecto)[NOMBRE]
hash[NOMBRE_a3f9c2] — mismo valor, mismo código en toda la llamada
mask••••••••••••

hash es el que sirve cuando necesitas saber que dos menciones son la misma persona sin saber quién es: útil para contar clientes distintos en un lote sin guardar nombres.

Marcadores por tipo: [NOMBRE], [TELEFONO], [EMAIL], [CUENTA], [TARJETA], [DNI], [DIRECCION], [FECHA_NACIMIENTO], [MATRICULA], [DATO_MEDICO].

redact_audio no silencia el audio

No pongas redact_audio: true. Factura y no existe ninguna etapa que silencie el audio: el fichero vuelve idéntico. Déjalo en false, que es el valor por defecto — o mejor, no lo mandes.

El silenciado de PII dentro del audio está en camino, pero mientras no funcione no se anuncia ni se debería contratar.

On this page