Chatter in Apxを利用してコメントをメンション付きで投稿する
タイトル通り。
ChatterのコメントをApex経由で@メンション付きで投稿する。
Chatterコメントは、FeedCommentというオブジェクト名で作成されているので、
このオブジェクトにレコードをインサートすればコメントは作成出来る。
しかしその場合はコメントにそのまま@ユーザ名とつけてもメンションとして認識されない。
そのため、メンションをapex経由でつけるには、Chatter in Apex、ConnectAipを使用する。
コメントの投稿
Chatter in Apexのドキュメントは以下。(英語)
Chatter in Apex
この中で、コメントの投稿には、postCommentToFeedElementメソッドを使う。
以下のサンプルがほぼそのまま。
Post a Comment with a Mention
以下、順番に組み立ててみる。
postCommentToFeedElement
postCommentToFeedElementの引数は以下となっている。
communityId
投稿するユーザーのコミュニティのID。null可。feedElementId
親となる投稿(FeedItem)のSFIDcomment
投稿するコメントの情報feedElementFileUpload
投稿するファイルのバイナリ情報
(第二引数)comment
ConnectApi.CommentInput型。
ConnectApi.CommentInput Class
bodyメソッドに本文などの情報を入力する
body
ConnectApi.MessageBodyInput型
ConnectApi.MessageBodyInput Class
メソッドは、mesageSegmentsのみ。
mesageSegments
List<ConnectApi.MessageSegmentInput>型
ConnectApi.MessageSegmentInputクラスは、入力したい内容の型のクラスが継承している。
テキストの入力内容は、ConnectApi.TextSegmentInputクラスを使用する。
メンションの場合は、ConnectApi.MentionSegmentInputクラス、となっている。
ConnectApi.MessageSegmentInput Class
ConnectApi.TextSegmentInput
textメソッドのみ。ここに投稿する本文を入れる。
ConnectApi.TextSegmentInput Class
ConnectApi.MentionSegmentInput
idメソッドにメンションを送りたいユーザーのIDを入力する。
もしくは、APIバージョン38以降なら、usernameメソッドでユーザー名も利用出来るよう。
ConnectApi.MentionSegmentInput Class
コード
一通りのコード全文は以下。
引数で、入力内容、親の投稿ID、メンションをつけるユーザのIDを渡すようにしている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | |
返却されるConnectApi.Commentクラスは以下。
ConnectApi.Comment Class