Show Menu
トピック×

メッセージングの基本事項

このページでは、メッセージングコンポーネントを使用してメッセージング機能を Web サイトに組み込む方法の詳細をまとめています。

クライアント側の基本事項

メッセージを作成
resourceType
social/messaging/components/hbs/composemessage
clientllibs
cq.social.hbs.messaging
テンプレート /libs/social/messaging/components/hbs/composemessage/composemessage.hbs
css /libs/social/messaging/components/hbs/composemessage/clientlibs/composemessage.css
properties 詳しくは、メッセ ージの設定を参照してください。
管理設定 メッセージの設定
メッセージリスト
(インボックス、送信済み、ごみ箱)
resourceType
social/messaging/components/hbs/messagebox
clientllibs
cq.social.hbs.messaging
テンプレート /libs/social/messaging/components/hbs/messagebox/messagebox.hbs
css /libs/social/messaging/components/hbs/messagebox/clientlibs/messagebox.css
properties 詳しくは、メッセ ージの設定を参照してください。
管理設定 メッセージの設定
クライアント側のカスタマイズ も参照してください。

サーバー側の基本事項

The String parameter must not contain a trailing slash "/" for the following MessageBuilder methods:
  • setInboxPath ()
  • setSentItemsPath ()
次に例を示します。
valid: mb.setInboxPath( "/mail/inbox" );
not valid: mb.setInboxPath( "/mail/inbox/" );

コミュニティサイト

ウィザードを使用して作成されるコミュニティサイト構造には、選択した場合にメッセージ機能が含まれます。 See User Management settings of Community Sites Console .

サンプルコード:メッセージ受信通知

ソーシャルメッセージ機能は、例えば、イベントの操作に関する操作(例えば、) send をス marking read ローしま marking delete す。 これらのイベントは、取得され、データに含まれるデータに対して実行されるイベントです。
The following example is of an event handler which listens for the message sent event and sends an email to all message recipients using the Day CQ Mail Service .
サーバーサイドのサンプルスクリプトを試すには、開発環境とOSGiバンドルの構築機能が必要です。
  1. に管理者としてログインします [CRXDE|Lite](https://localhost:4502/crx/de)
  2. 任意の名 bundle node 前を /apps/engage/install 使用して、次のようにinを作成します。
    • シンボリック名: com.engage.media.social.messaging.MessagingNotification
    • 名前:はじめにチュートリアルのメッセージ通知
    • 説明:ユーザーがメッセージを受信したときに電子メール通知を送信するためのサンプルサービス
    • パッケージ: com.engage.media.social.messaging.notification
  3. 次に、に移 /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/src/main/java/com/engage/media/social/messaging/notification 動します。
    1. Delete the Activator.java class automatically created.
    2. クラスを作成しま MessageEventHandler.java す。
    3. Copy and paste the code below into MessageEventHandler.java .
  4. すべて保存 」をクリックします。
  5. Navigate to /apps/engage/install/com.engage.media.social.messaging.MessagingNotification/com.engage.media.social.messaging.MessagingNotification.bnd , and add all the import statements as written in the MessageEventHandler.java code.
  6. バンドルをビルドします。
  7. Ensure Day CQ Mail Service OSGi service is configured.
  8. デモユーザーとしてログインし、別のユーザーに電子メールを送信します。
  9. 受信者は、新しいメッセージに関する電子メールを受信します。

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

    }
}