Notions fondamentales sur la messagerie messaging-essentials

CAUTION
AEM 6.4 a atteint la fin de la prise en charge étendue et cette documentation n’est plus mise à jour. Pour plus d’informations, voir notre période de support technique. Rechercher les versions prises en charge here.

Cette page documente les détails de l’utilisation du composant Messagerie pour inclure une fonction de messagerie sur un site web.

Principes élémentaires pour le côté client essentials-for-client-side

Composer le message

resourceType
social/messaging/components/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
see Configuration de la messagerie
configuration de l'administrateur
Configuration de la messagerie

Liste des messages (pour Boîte de réception, Envoyé et Corbeille)

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
properties
Voir Configuration de la messagerie
configuration de l'administrateur
Configuration de la messagerie

Voir aussi Personnalisations côté client

Principes élémentaires pour le côté serveur essentials-for-server-side

CAUTION
Le paramètre String doit *ne pas *contenir de barre oblique "/" pour les méthodes MessageBuilder suivantes :
  • setInboxPath()
  • setSentItemsPath()
Par exemple :
code language-none
valid: mb.setInboxPath( "/mail/inbox" );
 not valid: mb.setInboxPath( "/mail/inbox/" );

Site de la communauté community-site

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

Exemple de code : Notification de réception d’un message sample-code-message-received-notification

La fonction de messagerie sociale génère des événements pour les opérations, par exemple send, marking read, marking delete. Ces événements peuvent être capturés et les actions effectuées sur les données contenues dans l’événement.

L’exemple suivant illustre un gestionnaire d’événements qui écoute la fonction message sent et envoie un email à tous les destinataires du message à l’aide de la variable 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.

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

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

    • Nom symbolique: com.engage.media.social.messaging.MessagingNotification
    • Nom: Notification de message du tutoriel de prise en main
    • Description: un exemple de service pour envoyer une notification électronique aux utilisateurs lorsqu’ils reçoivent un message ;
    • Package: 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.

    1. Supprimez la variable Activator.java classe créée automatiquement
    2. Créer une classe MessageEventHandler.java
    3. Copiez/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 comme indiqué dans la variable MessageEventHandler.java code.

  6. Création du lot

  7. Assurez-vous que Day CQ Mail ServiceLe service OSGi est configuré.

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

  9. Le destinataire doit recevoir un email concernant un nouveau message

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

    }
}
recommendation-more-help
5d37d7b0-a330-461b-814d-068612705ff6