Grondbeginselen van berichten messaging-essentials
Deze pagina documenteert de details van het werken met het gebruiken van de component van het Overseinen om een overseineneigenschap op een website te omvatten.
Essentiële elementen voor client-kant essentials-for-client-side
Bericht samenstellen
Berichtlijst (voor Postvak IN, Verzonden en Prullenbak)
Zie ook Aanpassingen aan de clientzijde
Essentiële elementen voor server-side essentials-for-server-side
-
Berichtenclient-API's voor SCF-componenten
-
Berichten-API's voor de dienst
setInboxPath
()setSentItemsPath
()
code language-none |
---|
|
Community-site community-site
Een structuur van de communautaire plaats, die gebruikend de tovenaar wordt gecreeerd, zal de overseineneigenschap omvatten wanneer geselecteerd. Zie User Management
instellingen van Community Sites Console.
Voorbeeldcode: Bericht ontvangen sample-code-message-received-notification
Met de functie Sociaal bericht worden bijvoorbeeld gebeurtenissen gegenereerd voor bewerkingen send
, marking read
, marking delete
. Deze gebeurtenissen kunnen worden afgevangen en er kunnen acties worden ondernomen op basis van de gegevens in de gebeurtenis.
Het volgende voorbeeld is een gebeurtenishandler die luistert naar de gebeurtenis message sent
en verzendt via de Day CQ Mail Service
.
Om het server-zijsteekproefmanuscript te proberen, zult u een ontwikkelomgeving en de capaciteit nodig hebben om een bundel te bouwen OSGi.
-
Aanmelden als beheerder
[CRXDE|Lite](http://localhost:4502/crx/de)
-
Een
bundle node
in/apps/engage/install
met willekeurige namen, zoals- Symbolic Name: com.connect.media.social.messaging.MessagingNotification
- Name: Melding van zelfstudie aan de slag
- Description: een voorbeeldservice voor het verzenden van een e-mailbericht naar gebruikers wanneer zij een bericht ontvangen
- Package:
com.engage.media.social.messaging.notification
-
Ga naar
/apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification
- Verwijder de
Activator.java
automatisch gemaakte klasse - Klasse maken
MessageEventHandler.java
- Kopieer/plak de onderstaande code in
MessageEventHandler.java
- Verwijder de
-
Klik op Save All
-
Navigeren naar
/apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd
en voeg alle instructies voor het importeren toe, zoals geschreven in het dialoogvensterMessageEventHandler.java
code. -
De bundel maken
-
Zorgen
Day CQ Mail Service
De dienst OSGi wordt gevormd -
Aanmelden als een demogebruiker en e-mail naar een andere demogebruiker sturen
-
De ontvanger ontvangt een e-mail over een nieuw bericht
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();
}
}
}