Questa pagina illustra i dettagli dell’utilizzo del componente Messaggi per includere una funzione di messaggistica in un sito Web.
Componi messaggio
resourceType | social/messaging/components/hbs/composemessaggio |
clientllibs | cq.social.hbs.messaging |
templates | /libs/social/messaging/components/hbs/composemessage/composemessage.hbs |
css | /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css |
proprietà | vedere Configurazione dei messaggi |
configurazione amministratore | Configurazione dei messaggi |
Elenco messaggi (per Inbox, Inviato e Cestino)
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 |
proprietà | Vedere Configurazione dei messaggi |
configurazione amministratore | Configurazione dei messaggi |
Vedere anche Personalizzazioni lato client
Messaggistica API client per componenti SCF
API di messaggistica per il servizio
Il parametro String *non deve contenere una barra finale "/" per i seguenti metodi di MessageBuilder:
setInboxPath
()setSentItemsPath
()Esempio:
valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );
Una struttura del sito community, creata utilizzando la procedura guidata, includerà la funzione di messaggistica selezionata. Vedere Impostazioni User Management
della console Siti della community.
La funzione Messaggi social genera eventi per le operazioni, ad esempio send
, marking read
, marking delete
. Questi eventi possono essere rilevati e le azioni eseguite sui dati contenuti nell’evento.
L'esempio seguente fa riferimento a un gestore eventi in ascolto dell'evento message sent
e invia un'e-mail a tutti i destinatari del messaggio utilizzando la variabile Day CQ Mail Service
.
Per provare lo script di esempio lato server, sarà necessario un ambiente di sviluppo e la capacità di creare un bundle OSGi.
Accedi come amministratore a [CRXDE|Lite](http://localhost:4502/crx/de)
Create un bundle node
in /apps/engage/install
con nomi arbitrari, ad esempio
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
Activator.java
creata automaticamenteMessageEventHandler.java
MessageEventHandler.java
Fare clic su Salva tutto
Passare 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 scritte nel codice MessageEventHandler.java
.
Creare il bundle
Verificare che il servizio Day CQ Mail Service
OSGi sia configurato
Effettua il login come utente dimostrativo e invia un'e-mail a un altro utente
Il destinatario deve ricevere 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();
}
}
}