Show Menu
TEMAS×

Esenciales de mensajería

Esta página documenta los detalles del trabajo con el componente Mensajería para incluir una función de mensajería en un sitio web.

Esenciales para el cliente

Componer mensaje
resourceType
social/mensajería/componentes/hbs/composemess
clientllibs
cq.social.hbs.messaging
templates /libs/social/messaging/components/hbs/composemessage/composemessage.hbs
css /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css
propiedades consulte Configuración de mensajería
configuración de administración Configuración de mensajes
Lista de mensajes (para Bandeja de entrada, Enviado y Papelera)
resourceType
social/messaging/components/hbs/messagebox
clientllibs
cq.social.hbs.messaging
templates /libs/social/messaging/components/hbs/messagebox/messagebox.hbs
css /libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css
propiedades Consulte Configuración de mensajes
configuración de administración Configuración de mensajes
Consulte también Personalizaciones del lado del cliente

Esenciales para servidor

El parámetro String *no debe *contener una barra diagonal final "/" para los siguientes métodos de MessageBuilder:
  • setInboxPath ()
  • setSentItemsPath ()
Por ejemplo:
valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );
```>

Sitio de la comunidad

Una estructura de sitio de comunidad, creada con el asistente, incluirá la función de mensajería cuando se seleccione. Consulte User Management Configuración de la consola Sitios de comunidad.

Código de muestra: Notificación de mensaje recibido

La característica Mensajería social desencadena eventos para operaciones, por ejemplo send``marking read , marking delete . Estos eventos se pueden capturar y realizar acciones en los datos contenidos en el evento.
El ejemplo siguiente es el de un controlador de eventos que escucha el message sent evento y envía un correo electrónico a todos los destinatarios del mensaje mediante el Day CQ Mail Service .
Para probar la secuencia de comandos de ejemplo del lado del servidor, necesitará un entorno de desarrollo y la capacidad para crear un paquete OSGi.
  1. Login as an administrator to [CRXDE|Lite](http://localhost:4502/crx/de)
  2. Crear una bundle node entrada /apps/engage/install con nombres arbitrarios, como
    • Nombre simbólico: com.engagement.media.social.messaging.MessagingNotification
    • Nombre : Notificación de mensaje de tutorial de introducción
    • Descripción : un servicio de muestra para enviar una notificación por correo electrónico a los usuarios cuando reciben un mensaje
    • Paquete : com.engage.media.social.messaging.notification
  3. Ir a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification
    1. Eliminar la Activator.java clase creada automáticamente
    2. Crear clase MessageEventHandler.java
    3. Copie y pegue el código siguiente en MessageEventHandler.java
  4. Haga clic en Guardar todo
  5. Vaya a todas las instrucciones de importación /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd y agréguelas tal como están escritas en el MessageEventHandler.java código.
  6. Crear el paquete
  7. Asegúrese de que el servicio Day CQ Mail Service OSGi esté configurado
  8. Inicie sesión como un usuario de demostración y envíe un correo electrónico a otro
  9. El destinatario debe recibir un correo electrónico con respecto a un nuevo mensaje

MessageEventHandler.java

package com.engage.media.social.messaging.notification;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Reference;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.Resource;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import org.apache.commons.mail.HtmlEmail;
import java.util.List;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adobe.cq.social.messaging.api.Message;
import com.adobe.cq.social.messaging.api.MessagingEvent;
import com.day.cq.mailer.MessageGatewayService;
import com.day.cq.mailer.MessageGateway;

@Component(immediate=true)
@Service(EventHandler.class)
@Properties({
        @Property(name = "event.topics", value = "com/adobe/cq/social/message")
})
public class MessagingEventHandler implements EventHandler {
    private Logger logger = LoggerFactory.getLogger(MessagingEventHandler.class);

    @Reference
    ResourceResolverFactory resourceResolverFactory;

    @Reference
    private MessageGatewayService messageGatewayService;

    ResourceResolver resourceResolver=null;
    MessageGateway messageGateway=null;

    public void sendMail(String from, String to,String subject, String content){
        Email email = new SimpleEmail();
        messageGateway = messageGatewayService.getGateway(SimpleEmail.class);
        try {
         email.addTo(to);
            email.addReplyTo(from);
            email.setFrom(from);
            email.setMsg(content);
            email.setSubject(subject);
         messageGateway.send(email);
        } catch(EmailException ex) {
            logger.error("MessageNotificaiton : Error sending email : "+ex.getMessage());
        }
        logger.info("**** MessageNotification **** Mail sent to " + to);
    }

    public void handleEvent(Event event) {
        //Get Message Path and originator User's ID from event
        String messagePath = (String) event.getProperty("path");
        String senderId = (String) event.getProperty("userId");
        MessagingEvent.MessagingActions action = (MessagingEvent.MessagingActions) event.getProperty("action");
        try{
            if(MessagingEvent.MessagingActions.MessageSent.equals(action)){
                resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);

                //Read message
                Resource resource = resourceResolver.getResource(messagePath);
                Message msg = resource.adaptTo(Message.class);

                //Get list of recipient Ids from message
                //For Getting Started Tutorial, Id is same as email. If that is not the case in your site, 
                //an additional step is needed to retrieve the email for the Id
                List<String> reclist = msg.getRecipientIdList();
                for(int i=0;i<reclist.size();i++){
                    //Send Email using Mailing Service
                    sendMail("admin@cqadmin.qqq",reclist.get(i),"New message on Getting Started Tutorial", "Hi\nYou have received a new message from  " +  senderId + ". To read it, sign in to Getting Started Tutorial.\n\n-Engage Admin");
                }
            }
        } catch(Exception ex){
            logger.error("Error getting message info : " + ex.getMessage());
        } finally {
            resourceResolver.close();
        }

    }
}