Messaging Essentials

Esta página documentos os detalhes de como trabalhar com o componente Mensagens para incluir um recurso de mensagem em um site.

Essentials for Client-Side

Escrever mensagem

resourceType

social/mensagens/componentes/hbs/composemessessasocial

clientllibs

cq.social.hbs.messaging

templates /libs/social/messaging/components/hbs/composemessage/composemessage.hbs
css /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css
propriedades Consulte Configurar Mensagens
configuração do administrador Configurar mensagens

Lista de mensagens

(para Caixa de entrada, Enviado e Lixeira)

resourceType

social/mensagens/componentes/hbs/caixa de mensagem

clientllibs

cq.social.hbs.messaging

modelos /libs/social/messaging/components/hbs/messagebox/messagebox.hbs
css /libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css
propriedades Consulte Configurar Mensagens
configuração do administrador Configurar mensagens

Consulte também Personalizações do cliente

Essentials for Server-Side

CUIDADO

O parâmetro String deve conter not uma barra à direita "/" para os seguintes métodos do MessageBuilder:

  • setInboxPath()
  • setSentItemsPath()

Por exemplo:

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

Site da comunidade

Uma estrutura de site da comunidade, criada usando o assistente, inclui o recurso de mensagens quando selecionado. Consulte User Management configurações de Console de sites da comunidade.

Código de exemplo: Notificação de Mensagem Recebida

O recurso Mensagens sociais lança eventos para operações, por exemplo send, marking read, marking delete. Esses eventos podem ser capturados e as ações executadas nos dados contidos no evento.

O exemplo a seguir é de um manipulador de eventos que escuta o evento message sent e envia um email para todos os recipient de mensagens usando o Day CQ Mail Service.

Para tentar o script de amostra do servidor, é necessário um ambiente de desenvolvimento e a capacidade de criar um pacote OSGi:

  1. Faça logon como administrador em [CRXDE|Lite](https://localhost:4502/crx/de).

  2. Crie um bundle nodeem /apps/engage/install com nomes arbitrários, como:

    • Nome simbólico: com.engage.media.social.messaging.MessagingNotification
    • Nome: Notificação de mensagem do tutorial de introdução
    • Descrição: Um exemplo de serviço para enviar uma notificação por email aos usuários quando eles receberem uma mensagem
    • Pacote: com.engage.media.social.messaging.notification
  3. Navegue até /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification e, em seguida:

    1. Exclua a classe Activator.java criada automaticamente.
    2. Crie a classe MessageEventHandler.java.
    3. Copie e cole o código abaixo em MessageEventHandler.java.
  4. Clique em Salvar tudo.

  5. Navegue até /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd e adicione todas as instruções de importação conforme gravadas no código MessageEventHandler.java.

  6. Construa o pacote.

  7. Verifique se o serviço Day CQ Mail ServiceOSGi está configurado.

  8. Efetue logon como um usuário de demonstração e envie um email para outro usuário.

  9. O recipient recebe um email com relação a uma nova mensagem.

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

    }
}

Nesta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now