ApexでChatterに@メンション付き投稿を行うユーティリティクラスの実装と活用方法


✅【動作確認済み】ApexでChatterに@メンション付き投稿を行うユーティリティクラスの実装と活用方法

Salesforceにおいて、ユーザーやChatterグループに@メンション付きの投稿を自動化したいケースは多々あります。この記事では、ConnectApiを利用した@メンション投稿ユーティリティクラスの実装を紹介し、実際の使用例を含めて解説します。テスト済みのコードをそのまま活用できるため、すぐに導入が可能です。


🔧 実装済みコード:PCS_ChatterMentionUtilクラス(変更不要)

以下は、ConnectApiを活用して、指定のユーザーまたはChatterグループに対してメンション付きで投稿するApexユーティリティクラスです。

public with sharing class PCS_ChatterMentionUtil {

    /**
     * 指定したグループまたはユーザーに @メンション付きで投稿するメソッド
     * @param targetId 通知先の User または Chatter Group の ID
     * @param text 投稿に含める本文メッセージ
     */
    public static void postWithMention(Id targetId, String text) {
        // ▼ 投稿先 Feed の構築
        ConnectApi.FeedItemInput feedInput = new ConnectApi.FeedItemInput();
        ConnectApi.MessageBodyInput bodyInput = new ConnectApi.MessageBodyInput();
        bodyInput.messageSegments = new List();
        
        // ── テキストセグメント (メンションの前)
        ConnectApi.TextSegmentInput beforeText = new ConnectApi.TextSegmentInput();
        beforeText.text = '完了通知: ';
        bodyInput.messageSegments.add(beforeText);
        
        // ── メンションセグメント本体
        ConnectApi.MentionSegmentInput mentionSeg = new ConnectApi.MentionSegmentInput();
        mentionSeg.id = targetId;
        bodyInput.messageSegments.add(mentionSeg);
        
        // ── メンション後に続くテキスト
        ConnectApi.TextSegmentInput afterText = new ConnectApi.TextSegmentInput();
        afterText.text = '\n' + text;
        bodyInput.messageSegments.add(afterText);
        
        // ▼ FeedInput 構成
        feedInput.body = bodyInput;
        feedInput.feedElementType = ConnectApi.FeedElementType.FeedItem;
        feedInput.subjectId = targetId;
        
        // ▼ 投稿実行(現在のユーザコンテキストで)
        ConnectApi.ChatterFeeds.postFeedElement(null, feedInput);
    }
}

🧪 使用例:実際にメンション付き投稿を行う

以下のように、Apexクラスやトリガーから PCS_ChatterMentionUtil.postWithMention() を呼び出すことで、ユーザーまたはChatterグループへの@メンション投稿が実行されます。

🧑‍💼 ユーザーへの通知例

Id userId = '005xxxxxxxxxxxx'; // メンションしたいユーザーのID
String message = 'レコード処理が正常に完了しました。ご確認ください。';
PCS_ChatterMentionUtil.postWithMention(userId, message);

👥 Chatterグループへの通知例

Id groupId = '0F9xxxxxxxxxxxx'; // ChatterグループのID
String groupMessage = 'バッチ処理が完了しました。関係者の皆様に共有いたします。';
PCS_ChatterMentionUtil.postWithMention(groupId, groupMessage);

✅ メリットと利用シーン

利点 説明
📣 明確な通知手段 メンションを使うことで確実にユーザーへ通知可能
🔄 ワークフローへの統合 Apexクラス・バッチ処理・トリガーから呼び出し可能
🛠 ノーコーディングな修正不要 汎用的なメソッドなので再利用性が高い
🧪 テスト済み ConnectApiベースで動作検証済みの安定コード

まとめ

Salesforce上での**@メンション投稿の自動化**は、業務通知やプロセス完了連携の精度を大幅に向上させます。本記事で紹介した PCS_ChatterMentionUtil クラスは、ConnectApiの公式機能を活用した**テスト済み・実用性の高い実装**です。是非プロジェクトに導入して、通知の効率化を図ってください。

コメント