Nozioni di base sulla messaggistica messaging-essentials

Questa pagina illustra i dettagli dell’utilizzo del componente Messaggistica per includere una funzione di messaggistica su un sito web.

Nozioni di base per lato client essentials-for-client-side

Componi messaggio

tiporisorsa
social/messaggistica/componenti/hbs/composemessage
clientllibs
cq.social.hbs.messaging
modelli
/libs/social/messaging/components/hbs/composemessage/composemessage.hbs
css
/libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css
proprietà
Vedi Configurazione messaggi
configurazione amministratore
Configurare la messaggistica

Elenco messaggi

(per Posta in arrivo, Inviato e Cestino)

tiporisorsa
social/messaggistica/componenti/hbs/messagebox
clientllibs
cq.social.hbs.messaging
modelli
/libs/social/messaging/components/hbs/messagebox/messagebox.hbs
css
/libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css
proprietà
Vedi Configurazione messaggi
configurazione amministratore
Configurare la messaggistica

Vedi anche Personalizzazioni lato client

Nozioni di base per lato server essentials-for-server-side

CAUTION
Il parametro String deve not contenere una barra finale "/" per i seguenti metodi MessageBuilder:
  • setInboxPath
  • setSentItemsPath
Ad esempio:
code language-none
valid: mb.setInboxPath( "/mail/inbox" );
 not valid: mb.setInboxPath( "/mail/inbox/" );

Sito community community-site

Una struttura del sito della community, creata mediante la procedura guidata, include la funzione di messaggistica se selezionata. Vedere le impostazioni User Management di Console Siti community.

Codice di esempio: messaggio ricevuto notifica sample-code-message-received-notification

La funzionalità di messaggistica social genera eventi per le operazioni, ad esempio send, marking read, marking delete. Questi eventi possono essere rilevati e possono essere intraprese azioni sui dati contenuti nell’evento.

L'esempio seguente è di un gestore eventi che ascolta l'evento message sent e invia un'e-mail a tutti i destinatari del messaggio utilizzando Day CQ Mail Service.

Per provare lo script di esempio lato server, è necessario un ambiente di sviluppo e la possibilità di creare un bundle OSGi:

  1. Accedere come amministratore a [CRXDE|Lite](https://localhost:4502/crx/de).

  2. Crea un bundle node in /apps/engage/install con nomi arbitrari, ad esempio:

    • Nome simbolico: com.engage.media.social.messaging.MessagingNotification
    • Nome: Avvio Notifica del messaggio del tutorial
    • Descrizione: servizio di esempio per l’invio di una notifica e-mail agli utenti quando ricevono un messaggio
    • Pacchetto: com.engage.media.social.messaging.notification
  3. Passare a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification, quindi:

    1. Elimina la classe Activator.java creata automaticamente.
    2. Creare la classe MessageEventHandler.java.
    3. Copiare e incollare il codice seguente in MessageEventHandler.java.
  4. Fare clic su Salva tutto.

  5. Passare a /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd e aggiungere tutte le istruzioni di importazione come scritto nel codice MessageEventHandler.java.

  6. Crea il bundle.

  7. Verifica che il servizio OSGi Day CQ Mail Service sia configurato.

  8. Accedi come utente demo e invia un’e-mail a un altro utente.

  9. Il destinatario riceve un’e-mail relativa a un nuovo messaggio.

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
81e2cd9d-0789-409d-b87c-2a8ce4f28791