Skip to main content

プラットフォームイベントを公開する

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

この最後のステップでは、#BearAlert トピックが含まれる各投稿の通知をトリガーする Chatter Apex トリガーを実装します。

Chatter Apex トリガーを実装する

  1. BearAlertTopicAssignmentTrigger という名前の Apex トリガーを作成します。
    1. Visual Studio Code で、force-app/main/default の下にある triggers フォルダーを右クリックし、[SFDX: Create Apex Trigger (SFDX: Apex トリガーを作成)] を選択します。
    2. トリガーの名前として BearAlertTopicAssignmentTrigger と入力します。
    3. Enter キーを押してからもう一度 Enter キーを押して、デフォルトの force-app/main/default/triggers を受け入れます。
  2. デフォルトのコードを次のコードに置き換えます。
    trigger BearAlertTopicAssignmentTrigger on TopicAssignment (after insert) {
        // Get FeedItem posts only
        Set<Id> feedIds = new Set<Id>();
        for (TopicAssignment ta : Trigger.new){
            if (ta.EntityId.getSObjectType().getDescribe().getName().equals('FeedItem')) {
                feedIds.add(ta.EntityId);
            }
        }
        // Load FeedItem bodies
        Map<Id,FeedItem> feedItems = new Map<Id,FeedItem>([SELECT Body FROM FeedItem WHERE Id IN :feedIds]);
        // Create messages for each FeedItem that contains the BearAlert topic
        List<String> messages = new List<String>();
        for (TopicAssignment ta : [SELECT Id, EntityId, Topic.Name FROM TopicAssignment WHERE Id IN :Trigger.new AND Topic.Name = 'BearAlert']) {
            messages.add(feedItems.get(ta.EntityId).body.stripHtmlTags().abbreviate(255));
        }
        // Publish messages as notifications
        List<Notification__e> notifications = new List<Notification__e>();
        for (String message: messages) {
            notifications.add(new Notification__e(Message__c = message));
        }
        List<Database.SaveResult> results = EventBus.publish(notifications);
        // Inspect publishing results
        for (Database.SaveResult result : results) {
            if (!result.isSuccess()) {
                for (Database.Error error : result.getErrors()) {
                    System.debug('Error returned: ' + error.getStatusCode() +' - '+ error.getMessage());
                }
            }
        }
    }
    コードのポイント:
    • このトリガーは、1 つ以上のトピックが含まれるすべての新しい Chatter 投稿をインターセプトします。
    • 投稿に #BearAlert トピックが含まれている場合は、トリガーは標準の EventBus ユーティリティクラスを通じて通知として投稿メッセージを公開します。公開後にエラーチェックが行われます。
  3. ファイルを保存します。
  4. triggers フォルダーを右クリックし、[SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] を選択して、トリガーを組織にリリースします。

Chatter トリガーをテストする

これで作業内容をテストできます。Chatter 投稿を作成して、通知がトリガーされることを確認します。

  1. アプリケーションランチャー (アプリケーションランチャーアイコン) で、[Sales (セールス)] を見つけて選択します。セールスアプリケーションがすでに開いている場合は、ブラウザーを更新します。
  2. [Chatter] をクリックします。
  3. 次の内容の新しい投稿を作成します。
    #BearAlert False alarm: It's just a big dog!

この時点でメッセージが次の両方として表示されます。

  • 通知トースト
  • Chatter 投稿

Chatter 投稿によってトリガーされた通知を示す画像。

プロジェクトのまとめ

おめでとうございます。これであなたもプラットフォームイベントのエキスパートです。

プラットフォームイベントを定義する方法、Apex を使用してイベントを公開する方法、lightning/empApi モジュールを使用する Lightning コンポーネントを通じてイベントに登録する方法を学習しました。

新しく得た知識を使って、独自のイベント駆動型アプリケーションを作成できます。

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む