Esta página documentos los detalles de cómo trabajar con el componente Mensajería para incluir una función de mensajería en un sitio web.
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 la 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 |
plantillas | /libs/social/messaging/components/hbs/messagebox/messagebox.hbs |
css | /libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css |
propiedades | Consulte Configuración de la mensajería |
configuración de administración | Configuración de mensajes |
Consulte también Personalizaciones del lado del cliente
API de cliente de mensajería para componentes SCF
API de mensajería para el servicio
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/" );
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 Consola de sitios de la comunidad.
La característica Mensajería social emite eventos para operaciones, por ejemplo send
, marking read
, marking delete
. Estos eventos se pueden capturar y se pueden tomar medidas sobre los datos contenidos en el evento.
El siguiente ejemplo es de un controlador de evento que escucha el evento message sent
y envía un correo electrónico a todos los destinatarios de mensajes mediante Day CQ Mail Service
.
Para probar la secuencia de comandos de muestra del lado del servidor, necesitará un entorno de desarrollo y la capacidad de crear un paquete OSGi.
Iniciar sesión como administrador para [CRXDE|Lite](http://localhost:4502/crx/de)
Cree un bundle node
en /apps/engage/install
con nombres arbitrarios, como
com.engage.media.social.messaging.notification
Ir a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification
Activator.java
creada automáticamenteMessageEventHandler.java
MessageEventHandler.java
Haga clic en Guardar todo
Vaya a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd
y agregue todas las sentencias de importación tal como están escritas en el código MessageEventHandler.java
.
Crear el paquete
Asegúrese de que el servicio Day CQ Mail Service
OSGi esté configurado
Inicie sesión como un usuario de demostración y envíe un correo electrónico a otro
El destinatario debe recibir un correo electrónico con respecto a un nuevo mensaje
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();
}
}
}