Messaging Essentials

Cette page documents les détails de l'utilisation du composant Messagerie pour inclure une fonction de messagerie sur un site Web.

Essentials for Client-Side

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 Configurer la messagerie
configuration admin Configurer la messagerie

Liste des messages

(pour Boîte de réception, Envoyé et 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 Configurer la messagerie
configuration admin Configurer la messagerie

Voir aussi Personnalisations côté client

Essentials for Server-Side

CAUTION

Le paramètre String doit ne pas contenir une 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/" );

Site de la communauté

Une structure de site communautaire, créée à l’aide de l’assistant, inclut la fonction de messagerie lorsqu’elle est sélectionnée. Voir les paramètres User Management de Community Sites Console.

Exemple de code : Notification reçue de message

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 avez besoin d’un environnement de développement et de la possibilité de créer un lot OSGi :

  1. Connectez-vous en tant qu’administrateur à [CRXDE|Lite](https://localhost:4502/crx/de).

  2. Créez un bundle nodedans /apps/engage/install avec des noms arbitraires, tels que :

    • Nom symbolique : com.engage.media.social.messaging.MessagingNotification
    • Nom : Notification de message du didacticiel de prise en main
    • Description : Exemple de service d’envoi d’une notification par courrier électronique aux utilisateurs lorsqu’ils reçoivent un message
    • Module: com.engage.media.social.messaging.notification
  3. Accédez à /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification, puis :

    1. Supprimez la classe Activator.java créée automatiquement.
    2. Créez la classe MessageEventHandler.java.
    3. Copiez et collez le code ci-dessous dans MessageEventHandler.java.
  4. Cliquez sur Enregistrer tout.

  5. 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.

  6. Créez le lot.

  7. Vérifiez que le service Day CQ Mail ServiceOSGi est configuré.

  8. Connectez-vous en tant qu’utilisateur de démonstration et envoyez un courrier électronique à un autre utilisateur.

  9. Le destinataire reçoit un courrier électronique concernant un nouveau message.

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();
        }

    }
}

Sur cette page