Cette page documents les détails de l'utilisation du composant Messagerie pour inclure une fonction de messagerie sur un site Web.
Composer le message
resourceType | social/messagerie/composants/hbs/composemessage |
clientllibs | cq.social.hbs.messaging |
templates | /libs/social/messaging/components/hbs/composemessage/composemessage.hbs |
css | /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css |
properties | voir Configuration de la messagerie |
configuration admin | Configuration de la messagerie |
Liste de message (pour la boîte de réception, l’envoi et la corbeille)
resourceType | social/messagerie/composants/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 |
propriétés | Voir Configuration de la messagerie |
configuration admin | Configuration de la messagerie |
Voir aussi Personnalisations côté client
Messaging client APIs for SCF components
Le paramètre String doit *ne pas *contenir de barre oblique à la fin "/" pour les méthodes MessageBuilder suivantes :
setInboxPath
()setSentItemsPath
()Par exemple :
valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );
Une structure de site communautaire, créée à l'aide de l'assistant, inclura la fonction de messagerie lorsqu'elle est sélectionnée. Voir les paramètres User Management
de Community Sites Console.
La fonction de messagerie sociale lance des événements pour les opérations, par exemple send
, marking read
, marking delete
. Ces événements peuvent être capturés et des mesures prises sur les données contenues dans le événement.
L'exemple suivant montre un gestionnaire de événements qui écoute le événement message sent
et envoie un courrier électronique à tous les destinataires de messages à l'aide de Day CQ Mail Service
.
Pour tester l’exemple de script côté serveur, vous aurez besoin d’un environnement de développement et de la possibilité de créer un lot OSGi.
Connectez-vous en tant qu'administrateur à [CRXDE|Lite](http://localhost:4502/crx/de)
Créez un bundle node
dans /apps/engage/install
avec des noms arbitraires, tels que
com.engage.media.social.messaging.notification
Accédez à /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification
.
Activator.java
automatiquement crééeMessageEventHandler.java
MessageEventHandler.java
Cliquez sur Enregistrer tout
Accédez à /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd
et ajoutez toutes les instructions d'importation telles qu'elles sont écrites dans le code MessageEventHandler.java
.
Créez le lot
Vérifier que le service Day CQ Mail Service
OSGi est configuré
Se connecter en tant qu’utilisateur de démonstration et envoyer un courrier électronique à un autre
Le destinataire doit recevoir un courriel concernant un nouveau message.
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();
}
}
}