Messaging Essentials messaging-essentials
Auf dieser Seite werden die Details der Arbeit mit dokumentiert, die mit der Messaging-Komponente durchgeführt wird, um eine Messaging-Funktion in eine Website einzuschließen.
Grundlagen für Client-seitige essentials-for-client-side
Nachricht erstellen
Nachrichtenliste
(Für Posteingang, gesendet und Papierkorb)
Siehe auch Client-seitige Anpassungen
Grundlagen für Server-seitige essentials-for-server-side
- Konfigurieren von Nachrichten
- Messaging-Client-) für SCF-Komponenten
- Messaging-APIs für den Service
- Messaging-Endpunkte
- Server-seitige Anpassungen
- setInboxPath()
- setSentItemsPath()
| code language-none | 
|---|
|  | 
Community-Site community-site
Eine Community-Site-Struktur, die mithilfe des Assistenten erstellt wurde, enthält die Messaging-Funktion, wenn sie ausgewählt wird. Siehe User Management Einstellungen der Community Sites-Konsole.
Beispielcode: Benachrichtigung über empfangene Nachricht sample-code-message-received-notification
Die Social-Messaging-Funktion löst Ereignisse für Vorgänge aus, z. B. send, marking read, marking delete. Diese Ereignisse können erfasst und Aktionen für die im Ereignis enthaltenen Daten durchgeführt werden.
Das folgende Beispiel zeigt einen Ereignis-Handler, der auf das message sent-Ereignis wartet und mithilfe der Day CQ Mail Service eine E-Mail an alle Nachrichtenempfänger sendet.
Um das Server-seitige Beispielskript auszuprobieren, benötigen Sie eine Entwicklungsumgebung und die Möglichkeit, ein OSGi-Bundle zu erstellen:
- 
                  Melden Sie sich als Administrator bei [CRXDE|Lite](https://localhost:4502/crx/de)an.
- 
                  Erstellen Sie eine bundle node-/apps/engage/installmit beliebigen Namen, z. B.:- Symbolischer Name: com.engage.media.social.messaging.MessagingNotification
- Name: Erste Schritte Tutorial-Benachrichtigung
- Beschreibung: Ein Beispiel-Service für das Senden einer E-Mail-Benachrichtigung an Benutzer, wenn sie eine Nachricht erhalten
- Paket: com.engage.media.social.messaging.notification
 
- Symbolischer Name: 
- 
                  Navigieren Sie zu /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notificationund dann:- Löschen Sie die automatisch erstellte Activator.java.
- Erstellen Sie MessageEventHandler.java.
- Kopieren Sie den unten stehenden Code und fügen Sie ihn in MessageEventHandler.javaein.
 
- Löschen Sie die automatisch erstellte 
- 
                  Klicken Sie auf Alle speichern. 
- 
                  Navigieren Sie zu /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bndund fügen Sie alle Importanweisungen hinzu, wie sie imMessageEventHandler.java-Code geschrieben sind.
- 
                  Erstellen Sie das Bundle. 
- 
                  Stellen Sie sicher Day CQ Mail Servicedass der OSGi-Dienst konfiguriert ist.
- 
                  Melden Sie sich als Demobenutzer an und senden Sie eine E-Mail an einen anderen Benutzer. 
- 
                  Der Empfänger erhält eine E-Mail zu einer neuen Nachricht. 
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();
        }
    }
}