En corto: la llave de API del proveedor de IA se queda en el entorno del servidor y nunca viaja al navegador. El navegador le pide a su sitio Drupal una sesión corta y firmada; Drupal la crea con la llave y entrega solo la sesión. Las respuestas del proveedor se verifican por firma, las herramientas que el agente puede usar exigen un secreto, y lo que el agente escribe espera a una persona. El concierge de voz de nuestro propio sitio funciona así, sobre elevenlabs_agent, un módulo que nuestro fundador creó y mantiene en drupal.org. El módulo está en su serie 1.0 alpha: publicado y mantenido activamente.
¿Por qué tantos chatbots dejan la llave a la vista?
Porque la forma más rápida de poner un chatbot es un widget que le habla al proveedor de IA directamente desde el navegador del visitante. Para eso el navegador necesita una credencial, y lo que tiene el navegador lo puede leer cualquier visitante en las herramientas de desarrollo. Una llave leída así le sirve a quien la tenga, y la cuenta le llega a usted. Guardar la llave en el servidor es un requisito del propio ElevenLabs para sus agentes, como anota la documentación del módulo.
¿Cómo evito una factura sorpresa?
Limitando quién puede iniciar una llamada y vigilando cuánto cuesta cada una. Lo que hace hoy el módulo:
- Límites para abrir sesiones nuevas: por dirección del visitante (por defecto 10 por minuto), más un techo opcional para todo el sitio y otro por agente, contra muchos clientes que se quedan cada uno por debajo del límite individual. Nuestro concierge tiene activo el techo de todo el sitio.
- Un tope a la duración de cada llamada: 1.200 segundos por defecto, el mismo que usa nuestro concierge.
- Un registro del costo de cada llamada, guardado tal como lo reporta el proveedor, por agente, y exportable para la contabilidad.
- Un medidor de consumo que muestra el gasto de hoy y del mes frente a un presupuesto que usted fija.
Eso es vigilar y limitar, no un corte automático. Para tener un respaldo que no dependa del módulo, su propio README recomienda fijar límites de uso en la cuenta del proveedor. Y un detalle detrás de una CDN: el límite por dirección solo funciona si Drupal ve la dirección real de cada visitante. En nuestros sitios, detrás de Cloudflare, la ve.
¿Y el Habeas Data?
Un agente de voz graba a las personas, así que esto se decide por agente, antes del lanzamiento:
- Si las llamadas se graban. La transcripción es la materia prima de cada contacto comercial.
- Cuánto tiempo las guarda el proveedor. Nuestro concierge las guarda 90 días, y nuestra política de privacidad lo dice, junto con los derechos que le da al visitante la Ley 1581 de 2012. La documentación del módulo anota que, por defecto, el proveedor las guardaría para siempre.
- El consentimiento. El botón de llamada pide permiso para el micrófono y el sonido la primera vez que se usa.
Por qué le sirve: son tres ajustes, y cada uno es una frase con la que su política de privacidad tiene que cuadrar.
¿Cómo guarda el agente su llave en el servidor?
Así lo hace elevenlabs_agent en su versión actual, 1.0.1-alpha12, del 7 de octubre de 2026:
- El visitante oprime el botón de llamada. El navegador le pide una sesión a una ruta de Drupal, que primero verifica un token de seguridad y un límite de solicitudes.
- Drupal llama al proveedor con la llave, que solo tiene el servidor, y recibe una sesión corta y firmada.
- El navegador recibe solo esa sesión y con ella abre la conexión de audio en vivo. La llave nunca sale del servidor.
- Cuando termina la llamada, el proveedor le devuelve la transcripción a Drupal. Drupal verifica su firma HMAC-SHA256 y su hora antes de creerle una palabra.
- Si el agente usa una herramienta del sitio en plena conversación, esa herramienta exige primero un secreto compartido.
En nuestro sitio, los tres secretos del agente (la llave de API, el secreto de las respuestas y el de las herramientas) salen del entorno del servidor. La configuración que está en git los tiene vacíos. Eso es lo que pide la guía de seguridad del módulo: secretos en la configuración del servidor, nunca en la configuración exportable, y el informe de estado de Drupal avisa cuando no es así.
Por qué le sirve: puede pasarle el repositorio a un desarrollador nuevo, exportar la configuración o abrir las herramientas del navegador, y la llave no está en ninguno.
¿Qué puede hacer el agente, en concreto?
Solo lo que le permiten sus herramientas. Cada una tiene un nombre, una descripción y un esquema, y es Drupal quien responde. Nuestra regla para el concierge es que solo responde con lo que el sitio publica. Tiene una sola herramienta que escribe: cuando el visitante ha contado lo suficiente, guarda un contacto comercial. Ese contacto queda sin publicar, como un formulario de contacto, para que una persona lo lea y decida. El agente no lo publica, no lo envía y no actúa sobre él.
El módulo también cuida el resto del sitio: nunca abre una sesión de Drupal para un visitante anónimo (la lista de páginas que leyó se queda en su navegador y viaja con la llamada), así que las páginas se pueden seguir sirviendo desde la caché.
¿Dónde quedan los módulos de IA de Drupal?
"Drupal AI agents" también es el nombre de un módulo. La comunidad de Drupal construye su marco general de IA en el módulo AI (ai, 1.5.1, del 14 de octubre de 2026) y en AI Agents (ai_agents, 1.3.5, con 1.4.0-beta1 en pruebas, ambas del 2 de septiembre de 2026). elevenlabs_agent es otra pieza: un agente de voz en vivo, independiente, que no depende del módulo AI. Nuestro sitio no corre hoy el módulo AI. La regla de las llaves es la misma para los dos: la llave es del servidor, y el navegador recibe solo lo que necesita una sesión.
Si lo que busca es que su propio asistente trabaje sobre el sitio, y no que un visitante hable con un agente, eso es un servidor MCP: vea un servidor MCP para un sitio Drupal.
¿Qué no afirmamos?
- El módulo está en su serie 1.0 alpha. Su propio documento de seguridad dice que es una versión previa y que todavía no está cubierto por la política de avisos de seguridad de drupal.org.
- Ese documento también lista sus límites conocidos, como que las llamadas a herramientas no tienen protección contra repetición más allá de rotar el secreto. Preferimos que lo lea aquí y no que lo descubra después.
- Su README dice sin rodeos que se hizo con mucha ayuda de IA y con revisión humana. Cómo trabajamos con IA está en cómo usamos la IA, y dónde no la dejamos actuar.
- No publicamos las cifras de nuestro concierge.
- Hoy el ingeniero es nuestro fundador. El soporte va en horario hábil de Colombia (UTC-5), y el único precio fijo es una hora con el fundador: 75 dólares.
El concierge de nuestra página de inicio es este módulo, funcionando. Pregúntele algo, o escríbanos. Para un agente en su propio sitio, mire nuestra oferta.