Grundlagen zu Messaging messaging-essentials

CAUTION
AEM 6.4 hat das Ende der erweiterten Unterstützung erreicht und diese Dokumentation wird nicht mehr aktualisiert. Weitere Informationen finden Sie in unserer technische Unterstützung. Unterstützte Versionen suchen here.

Auf dieser Seite werden die Details zum Arbeiten mit der Messaging-Komponente beschrieben, um eine Messaging-Funktion auf einer Website einzubinden.

Grundlagen für Client-seitige Unterstützung essentials-for-client-side

Nachricht erstellen

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 Messaging konfigurieren
Admin-Konfiguration
Messaging konfigurieren

Nachrichtenliste (für Posteingang, Gesendet und Papierkorb)

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
Siehe Messaging konfigurieren
Admin-Konfiguration
Messaging konfigurieren

Siehe auch Clientseitige Anpassungen

Grundlagen für Server-seitige Unterstützung essentials-for-server-side

CAUTION
Der String-Parameter darf für die folgenden MessageBuilder-Methoden *keinen Schrägstrich "/"enthalten:
  • setInboxPath()
  • setSentItemsPath()
Beispiel:
code language-none
valid: mb.setInboxPath( "/mail/inbox" );
 not valid: mb.setInboxPath( "/mail/inbox/" );

Community-Site community-site

Eine Community-Site-Struktur, die mithilfe des Assistenten erstellt wird, enthält die Messaging-Funktion, falls ausgewählt. Siehe User Management Einstellungen von Community-Sites-Konsole.

Beispielcode: Benachrichtigung erhalten sample-code-message-received-notification

Die Funktion Social Messaging 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 die message sent -Ereignis ein und sendet eine E-Mail an alle Empfänger, die die Day CQ Mail Service.

Zum Testen des serverseitigen Beispielskripts benötigen Sie eine Entwicklungsumgebung und die Möglichkeit, ein OSGi-Bundle zu erstellen.

  1. Melden Sie sich als Administrator bei [CRXDE|Lite](http://localhost:4502/crx/de)

  2. Erstellen Sie eine bundle nodein /apps/engage/install mit beliebigen Namen, wie

    • Symbolischer Name: com.engage.media.social.messaging.MessagingNotification
    • Name: Erste Schritte - Tutorial-Nachrichten-Benachrichtigung
    • Beschreibung: einen Beispieldienst zum Senden einer E-Mail-Benachrichtigung an Benutzer beim Empfang einer Nachricht
    • Paket: com.engage.media.social.messaging.notification
  3. Navigieren Sie zu /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification

    1. Löschen Sie die Activator.java automatisch erstellte Klasse
    2. Klasse erstellen MessageEventHandler.java
    3. Kopieren/fügen Sie den unten stehenden Code in MessageEventHandler.java
  4. Klicken Sie auf Alle speichern

  5. Navigieren Sie zu /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd und fügen Sie alle Importanweisungen hinzu, wie in der MessageEventHandler.java Code.

  6. Bundle erstellen

  7. Sichern Day CQ Mail ServiceOSGi-Dienst ist konfiguriert

  8. Melden Sie sich als ein Demobenutzer an und senden Sie eine E-Mail an einen anderen

  9. Der Empfänger sollte eine E-Mail bezüglich einer neuen Nachricht erhalten

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