Messaging Essentials

Auf dieser Seite werden die Details zum Arbeiten mit der Messaging-Komponente Dokumente, um eine Messaging-Funktion auf einer Website einzuschließen.

Grundlagen für clientseitige

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

Liste der Nachricht (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 Konfigurieren von Messaging
Admin-Konfiguration Messaging konfigurieren

Siehe auch clientseitige Anpassungen

Grundlagen für serverseitige

ACHTUNG

Der String-Parameter darf für die folgenden MessageBuilder-Methoden *keinen *folgenden Schrägstrich (/) enthalten:

  • setInboxPath()
  • setSentItemsPath()

Beispiel:

valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );

Community-Site

Eine Community-Site-Struktur, die mithilfe des Assistenten erstellt wurde, enthält bei Auswahl die Messaging-Funktion. Siehe User Management Einstellungen der Community-Sites-Konsole.

Beispielcode: Benachrichtigung erhalten

Die Social Messaging-Funktion gibt Ereignis für Vorgänge aus, z. B. send marking read, marking delete. Diese Ereignis können abgefangen und anhand der im Ereignis enthaltenen Daten ausgeführt werden.

Das folgende Beispiel zeigt einen Ereignis-Handler, der auf das message sent Ereignis überwacht und eine E-Mail an alle Empfänger mit der Day CQ Mail ServiceFunktion sendet.

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

  1. Login as an administrator to [CRXDE|Lite](http://localhost:4502/crx/de)

  2. Erstellen Sie ein bundle nodein /apps/engage/install mit beliebigen Namen, z. B.

    • Symbolischer Name: com.engagement.media.social.messaging.MessagingNotification
    • Name: Erste Schritte - Benachrichtigung über Tutorialmeldungen
    • Beschreibung: ein Beispieldienst zum Senden einer E-Mail-Benachrichtigung an Benutzer, die eine Nachricht erhalten
    • 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 automatisch erstellte Activator.java Klasse
    2. Create-Klasse MessageEventHandler.java
    3. Kopieren/fügen Sie den unten stehenden Code in MessageEventHandler.java
  4. Klicken Sie auf Alle speichern

  5. Navigieren Sie zu allen Importanweisungen /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd und fügen Sie sie hinzu, wie im MessageEventHandler.java Code geschrieben.

  6. Erstellen Sie das Bundle

  7. Stellen Sie sicher, dass der Day CQ Mail ServiceOSGi-Dienst konfiguriert ist.

  8. Melden Sie sich als ein Demo-Benutzer 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

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

    }
}

Auf dieser Seite