Auto Secure Login

ASL Intake — Biblioteca de fuentes

Copia de la documentación pública: 2026-09-08

Página original publicada

Requisitos previos

Node.js 22 o posterior PostgreSQL 16 o posterior Cuenta de AWS con acceso a Bedrock Número de voz de Twilio

Página original publicada

Instale localmente o prepare un Droplet

Use INSTALL-WINDOWS.cmd para Windows nativo o scripts/deploy-digitalocean.ps1 para una instalación aislada en un Droplet compartido.

Página original publicada

Implemente la base de datos

La preparación del Droplet crea un clúster PostgreSQL separado y accesible solo desde el servidor, genera credenciales distintas para propietario y ejecución, aplica las migraciones y verifica el rol restringido sin cambiar otros clústeres. Command: npm run db:ensure && npm run db:deploy

Página original publicada

Configure el bufete y el agente de voz

Cree el bufete mediante la API administrativa y cargue el guion aprobado y el número de Twilio que recibirá las llamadas.

Página original publicada

Dirija Twilio al servicio de voz

Configure el webhook de llamadas entrantes en /twilio/incoming. La respuesta TwiML abre el flujo multimedia bidireccional.

Página original publicada

Inicie los servicios

Ejecute la API, el servicio de voz y el trabajador durable como servicios nativos de Node.js separados.

Página original publicada

Resultado esperado

Una llamada firmada por Twilio se transmite directamente a Nova, la admisión se guarda una sola vez y el trabajador la archiva y entrega.

Página original publicada

Notas de seguridad

No exponga el puerto de PostgreSQL ni las credenciales del propietario a la API, al servicio de voz, al trabajador o a Internet. Use HTTPS/WSS y valide cada firma de Twilio.

Página original publicada

Valide el webhook de entrada

El servicio verifica X-Twilio-Signature usando la URL pública exacta y los campos enviados.

Página original publicada

Resuelva la configuración por número

El número de Twilio marcado se relaciona en el servidor con un solo bufete y un guion aprobado.

Página original publicada

Detecte el idioma

Nova 2 Sonic detecta inglés o español y usa una voz políglota. La persona puede cambiar de idioma durante la llamada.

Página original publicada

Transmita el audio a Nova

Node convierte el audio mu-law de Twilio a PCM de 16 kHz y convierte la salida de Nova en tramas multimedia de Twilio.

Página original publicada

Use herramientas nativas

Nova llama a complete_intake, send_intake_link, dispatch_urgent_alert, transfer_call y end_call. Node valida y ejecuta cada herramienta con nombres de campos canónicos en inglés. send_intake_link exige el número confirmado explícitamente por la persona, su consentimiento explícito para SMS transaccionales y una evaluación de urgencia resuelta antes de enviarse.

Página original publicada

Conserve el ciclo de vida y la transcripción

Los eventos de inicio, alerta, finalización y cierre son idempotentes. Los segmentos de transcripción y el idioma preferido quedan aislados por bufete.

Página original publicada

Resultado esperado

No se necesita una plataforma externa de agentes de voz durante la ejecución.

Página original publicada

Twilio recibe 401

La URL pública exacta, el token de autenticación o el esquema del proxy no coinciden. Compare la URL configurada con la URL firmada por Twilio y confirme los encabezados del proxy.

Página original publicada

Notas de seguridad

No escriba audio, texto de transcripciones, credenciales ni argumentos de herramientas en los registros ordinarios del servicio.

Página original publicada

Cree el receptor

Use un endpoint HTTPS controlado por el producto o el bufete.

Página original publicada

Verifique la firma

Verifique la firma HMAC con marca de tiempo antes de procesar el cuerpo exacto de la solicitud.

Página original publicada

Aplique idempotencia

Guarde la clave estable de idempotencia y responda correctamente a duplicados seguros.

Página original publicada

Pruebe reintentos y la cola de errores

Provoque fallas temporales y permanentes y confirme los reintentos, el tiempo de visibilidad y la revisión de mensajes fallidos.

Página original publicada

Resultado esperado

Cada admisión llega lógicamente una sola vez, incluso cuando se repite una solicitud de red.

Página original publicada

Notas de seguridad

El receptor no debe escribir detalles de las personas que llaman en registros sin censura.

Página original publicada

Ejecute escenarios supervisados en ambos idiomas

Pruebe divulgación, emergencias, silencio, interrupciones, correcciones, transferencias, asuntos fuera de alcance y desconexiones por separado en inglés y español.

Página original publicada

Verifique los registros

Compare las notas supervisadas, la transcripción, los campos, el idioma preferido, el consentimiento, las alertas, el archivo y la entrega.

Página original publicada

Pruebe modos de falla

Pruebe fallas de Twilio, Nova, base de datos, cola, destino y servicios sin perder ni duplicar una admisión.

Página original publicada

Apruebe políticas y operaciones

Apruebe la redacción en ambos idiomas para transcripción, retención, privacidad, incidentes y escalamiento humano.

Página original publicada

Restaure un respaldo

Ejecute la prueba aislada de restauración y concilie admisiones conocidas antes de aceptar tráfico de producción.

Página original publicada

Resultado esperado

Cada requisito bloqueante cuenta con evidencia fechada y una persona responsable.

Página original publicada

Requisitos previos

Un conector de almacenamiento con la clave pública RSA-OAEP-256 del bufete El bucket compatible con S3 propiedad del bufete INTAKE_WEB_ENABLED e INTAKE_TRANSACTIONAL_SMS_ENABLED, que permanecen desactivados hasta que el bufete apruebe sus requisitos

Página original publicada

Comprenda el límite de confianza antes de activar nada

El navegador de la persona genera una clave AES-256-GCM por archivo, cifra las respuestas y los adjuntos, y envuelve esa clave con la clave pública RSA del bufete. El texto cifrado se carga directamente al bucket del bufete mediante una URL prefirmada de corta duración. ASL solo guarda metadatos del recibo: identificadores, tamaños en bytes, sumas SHA-256 y fechas.

Página original publicada

Envíe la invitación solo con consentimiento explícito

La invitación se crea para un número móvil confirmado con consentimiento explícito de SMS transaccional. El enlace de un solo uso viaja únicamente en el cuerpo del SMS y solo en el fragmento de la URL, por lo que el token nunca llega al servidor en una línea de solicitud ni queda en un registro de acceso.

Página original publicada

Permita que la persona complete el formulario

El enlace es de un solo uso. Al canjearlo, el token se intercambia por una cookie de sesión HttpOnly, Secure y SameSite=Strict junto con una cookie CSRF, y el token se elimina del historial del navegador.

Página original publicada

Verifique la carga antes de aceptar el envío

Cada objeto cifrado se vuelve a comprobar en el bucket del bufete: tamaño, tipo de contenido, metadatos y suma de verificación, antes de marcar el envío como completo. Una discrepancia hace fallar el envío en lugar de registrar un recibo de contenido que no se puede verificar.

Página original publicada

Recupere y descifre en los sistemas del bufete

El personal del bufete solicita URLs de descarga prefirmadas de corta duración, descifra con la clave privada del bufete, verifica el sobre y la suma de verificación, y analiza en busca de software malicioso en un entorno aislado antes de incorporar el contenido a su sistema de casos.

Página original publicada

Resultado esperado

El bufete puede leer sus propios envíos del formulario web. ASL puede demostrar que hubo un envío y no puede leer su contenido.

Página original publicada

No se puede crear una invitación y la API responde firm_storage_not_ready.

El conector de almacenamiento del bufete falta o no está en estado activo. Configure el conector y actívelo solo después de que el bufete complete la prueba de carga, descarga, descifrado, suma de verificación, cuarentena de software malicioso y recuperación de claves.

Página original publicada

Actualizar el bucket o la clave pública del bufete responde firm_storage_connector_locked.

El enrutamiento y el material de claves quedan inmutables en cuanto existe la primera invitación de ese bufete, para que el texto cifrado ya almacenado nunca quede huérfano en silencio. Siga el procedimiento documentado de rotación de emergencia. No edite el registro del conector directamente.

Página original publicada

Notas de seguridad

ASL nunca posee la clave privada del bufete ni una respuesta o un adjunto legibles del formulario web. Solicitar la inspección del contenido en el servidor es una violación del diseño, no un atajo de depuración. Perder la clave privada del bufete vuelve permanentemente irrecuperable el texto cifrado existente; por eso se exigen dos copias de recuperación cifradas y aprobadas antes de enviar una invitación real. Rotar la clave pública no vuelve a cifrar los objetos existentes; el contenido cifrado con la clave anterior sigue necesitando esa clave anterior.

Página original publicada