Questa pagina illustra i dettagli dell’utilizzo del componente Messaggistica per includere una funzione di messaggistica su un sito web.
Componi messaggio
resourceType | social/messaggistica/componenti/hbs/composemessage |
clientllibs | cq.social.hbs.messaging |
modelli | /libs/social/messaging/components/hbs/composemessage/composemessage.hbs |
css | /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css |
proprietà | Consulta Configurare la messaggistica |
configurazione amministratore | Configurare la messaggistica |
Elenco messaggi
(per Posta in arrivo, Inviato e Cestino)
resourceType | social/messaggistica/componenti/hbs/messagebox |
clientllibs | cq.social.hbs.messaging |
modelli | /libs/social/messaging/components/hbs/messagebox/messagebox.hbs |
css | /libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css |
proprietà | Consulta Configurare la messaggistica |
configurazione amministratore | Configurare la messaggistica |
Vedi anche Personalizzazioni lato client
Il parametro String deve non contengono una barra finale "/" per i seguenti metodi MessageBuilder:
setInboxPath
()setSentItemsPath
()Ad esempio:
valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );
Una struttura del sito della community, creata mediante la procedura guidata, include la funzione di messaggistica se selezionata. Consulta User Management
impostazioni di Console Siti community.
La funzione di messaggistica social genera eventi per le operazioni, ad esempio send
, marking read
, marking delete
. Questi eventi possono essere rilevati e possono essere intraprese azioni sui dati contenuti nell’evento.
L'esempio seguente è di un gestore eventi che ascolta message sent
e invia un messaggio e-mail a tutti i destinatari utilizzando Day CQ Mail Service
.
Per provare lo script di esempio lato server, è necessario un ambiente di sviluppo e la possibilità di creare un bundle OSGi:
Accedi come amministratore a [CRXDE|Lite](https://localhost:4502/crx/de)
.
Creare un bundle node
in /apps/engage/install
con nomi arbitrari, ad esempio:
com.engage.media.social.messaging.MessagingNotification
com.engage.media.social.messaging.notification
Accedi a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification
e quindi:
Activator.java
classe creata automaticamente.MessageEventHandler.java
.MessageEventHandler.java
.Clic Salva tutto.
Accedi a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd
e aggiungere tutte le istruzioni di importazione come scritto nella MessageEventHandler.java
codice.
Crea il bundle.
Assicurare Day CQ Mail Service
Il servizio OSGi è configurato.
Accedi come utente demo e invia un’e-mail a un altro utente.
Il destinatario riceve un’e-mail relativa a un nuovo messaggio.
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();
}
}
}