Private Message
Un sistema completo de mensajería privada que permite a los usuarios enviar y recibir mensajes privados con soporte para hilos de conversación, bloqueo de usuarios y notificaciones en tiempo real.
private_message
Install
composer require 'drupal/private_message:^3.0'
Overview
El módulo Private Message proporciona un sistema completo de mensajería privada para sitios Drupal. Los usuarios pueden comunicarse entre sí a través de hilos de mensajes privados, que pueden incluir múltiples participantes. El módulo soporta actualizaciones de mensajes en tiempo real mediante AJAX, bloqueo de usuarios para prevenir comunicaciones no deseadas y notificaciones por correo electrónico para nuevos mensajes.
Las capacidades principales incluyen hilos de mensajes (donde las conversaciones entre usuarios se agrupan), la posibilidad de eliminar el historial personal de mensajes sin afectar a otros miembros del hilo, configuración de notificaciones personalizable por usuario y un sistema de visualización flexible con múltiples modos de vista. El módulo está construido pensando en la extensibilidad, aprovechando los sistemas de Entity y plugins de Drupal.
Se proporcionan tres Block principales: un Block de bandeja de entrada que muestra los hilos de mensajes, un Block de notificaciones que muestra el conteo de mensajes/hilos no leídos, y un Block de acciones con enlaces rápidos para crear mensajes o gestionar usuarios bloqueados. El módulo se integra con Views para listados de mensajes personalizados, Rules para mensajería automatizada, y soporta notificaciones por correo electrónico a través del submódulo opcional Private Message Notify.
Features
- Sistema de mensajería privada con conversaciones en hilos entre dos o más usuarios
- Tres Block configurables: Bandeja de entrada (mostrando hilos de mensajes), Notificaciones (conteo de no leídos) y Acciones (enlaces rápidos)
- Sistema de bloqueo de usuarios con modos pasivo (bloqueo silencioso) y activo (mostrar mensaje)
- Carga de mensajes en tiempo real mediante AJAX y actualización de bandeja de entrada con tasas de refresco configurables
- Soporte de notificaciones por correo electrónico a través del submódulo Private Message Notify (requiere el módulo message_notify)
- Eliminar historial personal de mensajes en un hilo sin afectar a otros participantes
- Etiquetas de formulario de mensaje personalizables y atajos de teclado para envío rápido de mensajes
- Integración con el módulo Rules para envío automatizado de mensajes privados
- Integración con Views con plugins personalizados de Field y filtros para consultas de hilos
- Integración con perfil de usuario con preferencias de notificación (notificaciones por correo, temporización de avisos)
- Extra fields para mostrar enlaces de mensajes privados en perfiles de usuario, Node, comentarios y entidades de perfil
- Comando Drush para desinstalación segura del módulo (elimina todos los datos de mensajes)
- Soporte para prellenar destinatarios mediante parámetro URL con opción de ocultar el campo
- Enfoque automático configurable en el área de texto del mensaje y opción de eliminación de CSS para tematización personalizada
Use Cases
Comunicación Básica entre Usuarios
Habilita la mensajería privada entre miembros del sitio otorgando el permiso 'use private messaging system' a los usuarios autenticados. Los usuarios pueden visitar /private-messages para ver su bandeja de entrada y redactar nuevos mensajes. Coloca el Block de notificaciones en una región visible (como el encabezado) para que los usuarios vean su contador de mensajes no leídos en todo el sitio.
Comunicación para Moderación de Sitios Comunitarios
Los moderadores del sitio pueden usar mensajes privados para comunicarse con los usuarios sobre problemas de contenido. Crea un rol 'moderador' con permisos de mensajería y usa la integración con Rules para notificar automáticamente a los usuarios cuando su contenido es marcado o moderado. El sistema de hilos mantiene toda la comunicación organizada.
Sistema de Tickets de Soporte
Usa los hilos de mensajes privados como tickets de soporte ligeros. Los usuarios pueden enviar mensajes al personal de soporte que tiene los permisos apropiados. El campo de asunto del hilo puede usarse para categorizar las consultas. Views puede usarse para crear una bandeja de entrada de soporte mostrando todos los hilos que involucran a miembros del personal de soporte.
Comunicación Comprador-Vendedor en E-commerce
En sitios de marketplace, habilita la comunicación entre compradores y vendedores. Añade el extra field 'Private message link' a los perfiles de usuario y configúralo para mostrarse en la información del autor del producto. Los compradores pueden hacer clic para iniciar una conversación con los vendedores sobre los productos.
Conversaciones Grupales
El Module soporta hilos con múltiples miembros. Configura el ajuste max_members del widget apropiadamente para permitir discusiones grupales. Todos los miembros ven el mismo hilo y pueden participar en la conversación.
Bloqueo de Mensajes No Deseados
Los usuarios pueden bloquear a otros usuarios para que no les envíen mensajes. Usa el modo 'passive' para bloqueo silencioso (los usuarios bloqueados no saben que están bloqueados) o el modo 'active' para mostrar un mensaje de error. Los usuarios gestionan su lista de bloqueados en /private-message/ban.
Tips
- Usa parámetros de URL para prellenar destinatarios: /private-message/create?recipient=123 para crear un mensaje al usuario con ID 123
- Habilita 'Hide recipient field when prefilled' para crear formularios de contacto más limpios al enlazar a usuarios específicos
- Configura ajax_refresh_rate en 0 en sitios de bajo tráfico para reducir la carga del servidor por polling
- Usa la opción 'remove_css' al construir Theme personalizados que necesiten control total sobre el estilo
- Crea Views con los plugins proporcionados para construir interfaces de bandeja de entrada personalizadas o monitoreo de mensajes para administradores
- Los miembros del hilo son validados para excluir usuarios bloqueados de las sugerencias de autocompletado
- Usa atajos de teclado (por defecto: Enter) para enviar mensajes rápidamente sin hacer clic en el botón
- Los extra fields pueden añadir enlaces 'Send private message' a perfiles de usuario, Nodes, comentarios y Entity de perfil a través de la configuración de Manage Display
Technical Details
Admin Pages 6
/admin/config/private-message/config
Página principal de configuración del módulo Private Message. Configure los ajustes de notificaciones, etiquetas del formulario de mensajes, comportamiento de bloqueo de usuarios y opciones de visualización.
/admin/structure/private-message
Panel de administración para gestionar los tipos de Entity de Private Message, sus Fields, visualización de formularios y visualización de vistas.
/admin/structure/private-message/private-message-thread
Gestiona Fields, visualización de formularios y visualización de vistas para las entidades de hilos de Private Message.
/admin/structure/private-message/private-message
Gestiona Fields, visualización de formularios y visualización de vistas para las entidades de Private Message.
/admin/config/private-message/uninstall
Prepara el módulo para la desinstalación eliminando todos los datos de mensajes privados. Esta página muestra información y proporciona confirmación antes de eliminar todos los mensajes e hilos.
/admin/structure/private_message_ban
Lista administrativa de todos los bloqueos de mensajes privados en el sistema. Los administradores pueden ver, editar y eliminar registros de bloqueo.
Permissions 11
Hooks 1
hook_private_message_new_message
Se ejecuta cuando se añade un nuevo mensaje a un hilo. Permite a los módulos reaccionar a nuevos mensajes, como enviar notificaciones.
Drush Commands 1
drush private_message:prepare_uninstall
Prepara el módulo Private Message para la desinstalación eliminando todos los mensajes privados e hilos. Esto es necesario antes de que el módulo pueda ser desinstalado de forma segura.
Troubleshooting 6
Revisa la consola del navegador en busca de errores de JavaScript. Asegúrate de que la agregación de JavaScript no esté causando conflictos. Verifica que los tokens CSRF se estén generando correctamente. Comprueba que los ajustes de ajax_refresh_rate no estén configurados en 0 (deshabilitado).
El Module no puede desinstalarse mientras existan datos de mensajes privados. Visita /admin/config/private-message/uninstall o ejecuta 'drush private_message:prepare_uninstall' para eliminar todos los mensajes e hilos antes de desinstalar.
Limpia las etiquetas de caché guardando cualquier hilo. El Module usa etiquetas de caché como 'private_message_notification_block:uid:X' y 'private_message:status:uid:X'. Puede ser necesario limpiar la caché después de cambios de configuración.
Verifica el ajuste ban_mode. En modo 'passive', los usuarios bloqueados pueden enviar mensajes pero no serán visibles para el usuario que bloquea. Cambia al modo 'active' si quieres que los usuarios bloqueados vean un error.
Asegúrate de que el submodule Private Message Notify esté instalado junto con el Module Message Notify. Revisa las preferencias de notificación del usuario en su perfil. Verifica que enable_notifications esté en true en la configuración del Module.
Este problema (Issue #3512770) ha sido corregido en versiones recientes. Actualiza el Module a la última versión.
Security Notes 6
- El Module requiere tanto el permiso 'use private messaging system' COMO 'access user profiles' para funcionar, previniendo el acceso anónimo o no autorizado
- Todos los endpoints AJAX están protegidos con tokens CSRF
- Los permisos 'administer private messages' y otros permisos administrativos relacionados están marcados como 'restrict access' por seguridad
- Los bloqueos de usuarios se aplican a nivel de consulta, filtrando usuarios bloqueados del autocompletado y opcionalmente previniendo el envío de mensajes
- El contenido de los mensajes se almacena como Field de texto y debería tener restricciones apropiadas de formato de texto aplicadas
- Los permisos de administración para Entity de bloqueo están separados de los permisos generales de mensajería para control de acceso granular