La integración con Google Workspace utiliza la Gmail API a través de una cuenta de servicio con delegación de dominio, lo que significa que el helpdesk puede leer y enviar correos en nombre de cualquier cuenta de tu organización sin necesidad de contraseñas IMAP ni SMTP. Este enfoque usa el protocolo OAuth2, es más estable y seguro que IMAP, y es la opción recomendada por el sistema para organizaciones que utilizan Google Workspace. En el formulario de creación, cuando seleccionas el tipo “Google Workspace”, los campos de servidor IMAP y SMTP quedan ocultos y solo necesitas ingresar la dirección de correo.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/banredco/helpdesk/llms.txt
Use this file to discover all available pages before exploring further.
Requisitos previos
Antes de configurar el buzón en el helpdesk, debes completar la configuración del lado de Google:- Acceso de administrador a la consola de Google Workspace de tu organización.
- Un proyecto activo en Google Cloud Console con la Gmail API habilitada.
- Una cuenta de servicio creada en ese proyecto, con su archivo de clave en formato JSON descargado.
- Delegación de dominio configurada en la consola de administración de Google Workspace, para que la cuenta de servicio pueda impersonar a las cuentas de correo de la organización.
Configurar la integración paso a paso
Crear un proyecto en Google Cloud Console
Accede a console.cloud.google.com. Si ya tienes un proyecto dedicado para el helpdesk, puedes utilizarlo directamente. De lo contrario, crea uno nuevo desde Seleccionar proyecto → Nuevo proyecto e ingresa un nombre descriptivo como
Banred Helpdesk.Habilitar la Gmail API
Dentro del proyecto, ve a APIs y servicios → Biblioteca. Busca Gmail API y haz clic en Habilitar. Sin este paso, cualquier llamada a la API retornará un error 403.
Crear la cuenta de servicio y descargar la clave JSON
Ve a APIs y servicios → Credenciales → Crear credenciales → Cuenta de servicio. Completa el formulario con un nombre y descripción. Una vez creada, abre la cuenta de servicio, ve a la pestaña Claves → Agregar clave → Crear nueva clave y selecciona el formato JSON. El archivo se descargará automáticamente. Guárdalo en un lugar seguro: es el único que podrás descargar.
Configurar la delegación de dominio
La delegación de dominio permite que la cuenta de servicio actúe en nombre de usuarios reales de tu organización.Este scope es el que usa
- En Google Cloud Console, abre la cuenta de servicio recién creada y copia el valor de ID de cliente (un número largo).
- Accede a la Consola de Administración de Google Workspace en admin.google.com.
- Ve a Seguridad → Control y gestión de acceso → Controles de API → Delegación en todo el dominio → Administrar la delegación en todo el dominio.
- Haz clic en Agregar nuevo e ingresa el ID de cliente copiado en el paso anterior.
- En el campo de alcances (scopes), agrega exactamente el siguiente valor:
GmailService::getClient() para autenticarse y permite leer, modificar y enviar correos en nombre del usuario impersonado.Colocar el archivo JSON en el servidor
Copia el archivo de clave JSON de la cuenta de servicio al servidor donde está instalado el helpdesk. La ruta exacta que lee Asegúrate de que el archivo sea legible por el usuario del servidor web (habitualmente
GmailService es:www-data) pero que no sea accesible desde el navegador. Verifica que el directorio data/private/ esté protegido con las reglas de .htaccess o la configuración de Nginx correspondiente.Crear el buzón en el helpdesk
Con el archivo JSON en su lugar, ve a Admin → Configuración → Correos → Nuevo Correo y completa el formulario:
- Tipo de conexión: selecciona Google Workspace (Recomendado).
- Correo electrónico: ingresa la dirección de correo de la cuenta de Workspace que quieres vincular (ej.
soporte@tuempresa.com). Este valor es el que se pasará como$emailaGmailService::getClient()para la impersonación. - Nombre remitente, Reply-To, Grupo asignado y Opciones: completa estos campos igual que en cualquier otro buzón.
Probar y activar el buzón
Guarda el buzón y luego haz clic en el botón de prueba (ícono de enchufe).
mailbox-test.php llamará a GmailService::testConnection($email), que intenta listar las etiquetas del buzón vía la API. Si todo está correcto, verás ✅ Gmail API OK. Si hay un error de delegación, scope o ruta al JSON, verás ❌ Gmail API ERROR y el detalle quedará registrado en el error_log del servidor.Cómo funciona el procesamiento de correo
El procesamiento de buzones Gmail está implementado enGmailMailboxProcessor y se ejecuta a través de cron/process-gmail.php. El flujo es el siguiente:
- El cron consulta todos los buzones activos con
connection_type = 'gmail'. - Por cada buzón,
GmailMailboxProcessor::processMailbox()llama aGmailService::getMessages(), que recupera hasta 20 mensajes con la etiquetaUNREADusandolistUsersMessages(). - Para cada mensaje, se verifica si el
gmail_message_idya existe en la tablaemail_importspara evitar duplicados. - Si es nuevo, se llama a
GmailService::parseMessage()para extraer asunto, remitente y cuerpo, y aGmailService::getAttachments()para obtener los adjuntos. - Los datos se pasan a
EmailProcessor::process(), que determina si se trata de un ticket nuevo o una respuesta a uno existente (buscando el patrón[Ticket #N]en el asunto). - Si el procesamiento es exitoso, se registra el mensaje en
email_importsconprocess_status = 'Procesado'. - Finalmente,
GmailService::markAsRead()llama ausers_messages->modify()para eliminar la etiquetaUNREAD, evitando que el mensaje sea procesado de nuevo en la siguiente ejecución.
Configurar el cron job
Para que el procesamiento sea automático, agrega la siguiente línea al crontab del servidor. Con frecuencia de 1 minuto, los tickets se crean casi en tiempo real:www-data:
La integración con Gmail API no requiere credenciales IMAP ni SMTP. Los bloques de configuración de servidor de entrada y salida quedan ocultos en el formulario cuando
connection_type = 'gmail'. Todo el envío y recepción de correos se realiza exclusivamente a través de la Gmail API usando la cuenta de servicio configurada en el archivo google-workspace.json.