フィードおよびフィード要素の使用
機能
フィードを多様化する取り組みの一環として、フィード要素の持つさまざまな機能性を個々の機能に分割しました。機能では、一貫した方法でフィードのオブジェクトを操作できます。フィード要素で使用できる機能を判別するためにフィード要素種別を調べないでください。使用可能な機能を明示的に示す機能オブジェクトを調べてください。機能が存在するかどうかを確認することで、フィード要素に対してクライアントが実行できる操作を判別します。
ConnectApi.FeedElement.capabilities プロパティには、ConnectApi.FeedElementCapabilities オブジェクトが保持されます。このオブジェクトには機能オブジェクトのセットが保持されます。
機能オブジェクトには、機能が使用可能であるという情報と、その機能に関連付けられたデータが含まれます。フィード要素に機能プロパティが存在する場合、機能に関連付けられたデータがまだなくてもその機能を使用できます。たとえば、chatterLikes 機能プロパティがフィード要素に存在している場合、コンテキストユーザはそのフィード要素にいいね! と言うことができます。その機能プロパティがフィード要素に存在しない場合、そのフィード要素にいいね! と言うことはできません。
フィード要素を投稿するときに、ConnectApi.FeedElementInput.capabilities プロパティで特性を指定します。
Salesforce UI でのフィード項目の表示
クライアントは ConnectApi.FeedElement.capabilities プロパティを使用して、フィード要素で可能な操作やフィード要素を表示する方法を判別できます。ConnectApi.FeedItem 以外のすべてのフィード要素のサブクラスでは、クライアントはサブクラスの種別を知る必要はありません。代わりに、機能を確認することができます。フィード項目には機能がありますが、actor などのプロパティもいくつかあり、これらは機能として公開されていません。このため、クライアントは他のフィード要素と少し異なる方法でフィード項目を処理する必要があります。
Salesforce UI では、1 つのレイアウトを使用して、すべてのフィード項目が表示されます。この単一レイアウトにより、一貫したフィード項目のビューが顧客に提供され、容易に UI を作成する手段が開発者に提供されます。このレイアウトには常に同じ要素が含まれ、この要素は常に同じ位置にあります。変更されるのは、レイアウト要素の内容のみです。
次のフィード項目 (ConnectApi.FeedItem) レイアウト要素があります。- アクター (ConnectApi.FeedItem.actor) — フィード項目の作成者の写真またはアイコン (作成者は、フィード項目種別レベルで上書きできます。たとえば、ダッシュボードスナップショットフィード項目種別には、作成者としてダッシュボードが表示されます)。
- ヘッダー (ConnectApi.FeedElement.header) — コンテキストを提供します。同じフィード項目に、誰がどこに投稿したかに応じて異なるヘッダーを設定できます。たとえば、Ted がこのフィード項目をグループに投稿しています。
タイムスタンプ (ConnectApi.FeedElement.relativeCreatedDate) — フィード項目が投稿された日時。フィード項目の作成後 2 日を経過していない場合、日時は相対的なローカライズされた文字列として書式設定されます (「17 分前」など)。それ以外の場合は、日時は絶対的なローカライズされた文字列として書式設定されます。
- 内容 (ConnectApi.FeedElement.body) — すべてのフィード項目には内容があります。ユーザがフィード項目のテキストを指定しない場合は、内容が null になることがあります。内容は null になる可能性があるため、テキスト表示のデフォルトケースとして使用できません。代わりに、ConnectApi.FeedElement.header.text プロパティを使用します。このプロパティには常に値が含まれます。
- 補助内容 (ConnectApi.FeedElement.capabilities) — 機能の視覚化。「機能」を参照してください。
Salesforce でのフィード項目以外のフィード要素の表示方法
クライアントは ConnectApi.FeedElement.capabilities プロパティを使用して、フィード要素で可能な操作やフィード要素を表示する方法を判別できます。このセクションでは、フィード要素の表示方法の一例としてバンドルを使用しますが、これらのプロパティはどのフィード要素でも使用できます。機能によって、フィードのすべてのコンテンツを一貫して処理できます。
きれいに整理されたフィードをユーザに提供するために、Salesforce では、フィード変更追跡が 1 つのバンドルに集約されます。個々のフィード要素を表示するには、バンドルをクリックします。

- ヘッダー (ConnectApi.FeedElement.header) — フィード追跡変更バンドルの場合、このテキストは「User Name がこのレコードを更新しました。」です。
- タイムスタンプ (ConnectApi.FeedElement.relativeCreatedDate) — フィード��目が投稿された日時。フィード項目の作成後 2 日を経過していない場合、日時は相対的なローカライズされた文字列として書式設定されます (「17 分前」など)。それ以外の場合は、日時は絶対的なローカライズされた文字列として書式設定されます。
- 補助内容 (ConnectApi.FeedElement.capabilities.bundle.changes) — バンドルは、バンドル内の最初の 2 つのフィード変更追跡について fieldName、oldValue、および newValue プロパティを表示します。フィード変更追跡が 3 つ以上ある場合は、バンドルが [すべての更新を表示] リンクを表示します。
フィード要素の表示
- ユーザに @メンションしているフィード要素 (ユーザがそのフィード要素の親にアクセスできる場合)
- ユーザがメンバーであるグループに @メンションしているフィード要素
- ユーザが親レコードを表示できるレコードに対するレコード項目の変更 (User、Group、および File レコードを含む)
- ユーザに投稿されたフィード要素
- ユーザが所有するか、ユーザがメンバーであるグループに投稿されたフィード要素
- 標準およびカスタムレコードのフィード要素 (ToDo、行動、リード、取引先、ファイルなど)
フィードの種別
1ConnectApi.FeedElementPage newsFeedElementPage =
2 ConnectApi.ChatterFeeds.getFeedElementsFromFeed(null,
3 ConnectApi.FeedType.News, 'me');
4
5ConnectApi.FeedElementPage topicsFeedElementPage =
6 ConnectApi.ChatterFeeds.getFeedElementsFromFeed(null,
7 ConnectApi.FeedType.Topics, '0TOD00000000cld');フィルタフィードを取得するには、いずれかの ConnectApi.ChatterFeeds.getFeedElementsFromFilterFeed メソッドをコールします。お気に入りフィードを取得するには、いずれかの ConnectApi.ChatterFavorites.getFeedElements メソッドをコールします。
- Bookmarks — コンテキストユーザがブックマークとして保存したすべてのフィード項目が含まれます。
- Company — 種別 TrackedChange のフィード項目を除くすべてのフィード項目が含まれます。ユーザがフィード項目を表示するには、親への共有アクセス権が必要です。
- DirectMessageModeration — モデレーション用にフラグが設定されたすべてのダイレクトメッセージが含まれる。このダイレクトメッセージモデレーションフィードは、「コミュニティ Chatter メッセージのモデレート」権限を持つユーザのみが使用できます。
- DirectMessages — コンテキストユーザのダイレクトメッセージのすべてのフィード項目が含まれます。
- Draft — コンテキストユーザがドラフトを作成したすべてのフィード項目が含まれます。
- Files — コンテキストユーザがフォローしている人またはグループによって投稿されたファイルを含むすべてのフィード項目が含まれます。
- Filter — 指定したオブジェクト種別の親を持つフィード項目を含むように絞り込まれたニュースフィードが含まれます。
- Groups — コンテキストユーザが所有するか、メンバーであるすべてのグループのすべてのフィード項目が含まれます。
- Home — コミュニティの管理トピックに関連付けられたすべてのフィード項目が含まれます。
- Landing — フィードが要求されたとき、ユーザエンゲージメントを最適に促進する、すべてのフィード項目が含まれる。カスタマイズされたフィード項目が多くないとき、クライアントは空のフィードを避けることができます。
- Moderation — ダイレクトメッセージを除き、モデレーション用にフラグが設定されたすべてのフィード項目が含まれます。このコミュニティモデレーションフィードは、「コミュ���ティフィードのモデレート」権限を持つユーザのみが使用できます。
- Mute — コンテキストユーザがミュートしたすべてのフィード項目が含まれます。
- News — コンテキストユーザがフォローする人、ユーザがメンバーとなっているグループ、およびユーザがフォローするファイルとレコードからのすべての更新が含まれます。親がコンテキストユーザであるレコードのすべての更新が含まれます。コンテキストユーザをメンションするかコンテキストユーザがメンバーとなっているグループをメンションするすべてのフィード項目とコメントが含まれます。
- PendingReview — 確認待機中のすべてのフィード項目とコメントが含まれます。
- People — コンテキストユーザがフォローしているすべての人によって投稿されたすべてのフィード項目が含まれます。
- Record — 親が指定されたレコードであるすべてのフィード項目が含まれます。レコードは、グループ、ユーザ、オブジェクト、ファイル、その他の標準またはカスタムオブジェクトの場合があります。レコードがグループの場合、フィードにはそのグループにメンションしているフィード項目も含まれます。レコードがユーザの場合、フィードにはそのユーザに対するフィード項目のみが含まれます。別のユーザのレコードフィードを取得できます。
- Streams — コンテキストユーザがストリームで登録している最大 25 個のフィード対応エンティティの組み合わせのすべてのフィード項目が含まれます。フィード対応エンティティの例としては、ユーザ、グループ、レコードなどがあります。
- To — コンテキストユーザのメンションを含むすべてのフィード項目が含まれます。コンテキストユーザがコメントしたフィード項目、コンテキストユーザが作成し、コメントされたフィード項目が含まれます。
- Topics — 指定したトピックを含むすべてのフィード項目が含まれます。
- UserProfile — フィードで追跡可能なレコードをユーザが変更したときに作成されたフィード項目が含まれます。親がそのユーザであるフィード項目とそのユーザに @メンションしているフィード項目が含まれます。このフィードは、グループ更新など、より多くのフィード項目を返すニュースフィードとは異なります。別のユーザのユーザプロファイルフィードを取得できます。
- Favorites — コンテキストユーザが保存したお気に入りが含まれます。お気に入りには、フィード検索、リストビュー、およびトピックがあります。
postFeedElement を使用したフィード項目の投稿
- postFeedElement(communityId, subjectId, feedElementType, text)
- プレーンテキストのフィード要素を投稿します。
- postFeedElement(communityId, feedElement, feedElementFileUpload) (バージョン 35.0 以前)
- リッチテキストフィード要素を投稿します。メンションやハッシュタグトピックを含めたり、フィード要素にファイルを添付したり、アクションリンクグループをフィード要素に関連付けたりします。また、このメソッドを使用して、フィード要素の共有やコメントの追加を行うこともできます。
- postFeedElement(communityId, feedElement) (バージョン 36.0 以降)
- リッチテキストフィード要素を投稿します。メンションやハッシュタグトピックを含めたり、すでにアップロードされているファイルをフィード要素に添付したり、アクションリンクグループとフィード要素を関連付けたりします。また、このメソッドを使用して、フィード要素の共有やコメントの追加を行うこともできます。
フィード項目を投稿するときには、標準オブジェクトまたはカスタムオブジェクトの子を作成します。subjectId パラメータ、または feedElement パラメータで渡す ConnectApi.FeedElementInput オブジェクトの subjectId プロパティに、親オブジェクトを指定します。subjectId パラメータの値によって、フィード項目が表示されるフィードが決まります。返される ConnectApi.FeedItem オブジェクトの parent プロパティには、親オブジェクトに関する情報が含まれます。
- 自分への投稿
- このコードでは、フィード項目をコンテキストユーザに投稿します。subjectId に、コンテキストユーザの ID の別名である me を指定します。コンテキストユーザの ID を指定することもできます。
1ConnectApi.FeedElement feedElement = ConnectApi.ChatterFeeds.postFeedElement(null, 'me', ConnectApi.FeedElementType.FeedItem, 'Working from home today.'); - 新しく投稿されたフィード項目の parent プロパティには、コンテキストユーザの ConnectApi.UserSummary が含まれます。
- 別のユーザへの投稿
- このコードでは、フィード項目をコンテキストユーザ以外のユーザに投稿します。subjectId に、対象ユーザのユーザ ID を指定します。
1ConnectApi.FeedElement feedElement = ConnectApi.ChatterFeeds.postFeedElement(null, '005D00000016Qxp', ConnectApi.FeedElementType.FeedItem, 'Kevin, do you have information about the new categories?'); - 新しく投稿されたフィード項目の parent プロパティには、対象ユーザの ConnectApi.UserSummary が含まれます。
- グループへの投稿
- このコードは、コンテンツ添付ファイルを含むフィード項目をグループに投稿します。subjectId は、グループ ID を指定します。
1ConnectApi.FeedItemInput feedItemInput = new ConnectApi.FeedItemInput(); 2ConnectApi.ContentAttachmentInput contentAttachmentInput = new ConnectApi.ContentAttachmentInput(); 3ConnectApi.MessageBodyInput messageBodyInput = new ConnectApi.MessageBodyInput(); 4ConnectApi.TextSegmentInput textSegmentInput = new ConnectApi.TextSegmentInput(); 5 6contentAttachmentInput.contentDocumentId = '069D00000001pyS'; 7 8messageBodyInput.messageSegments = new List<ConnectApi.MessageSegmentInput>(); 9 10textSegmentInput.text = 'Would you please review this doc?'; 11messageBodyInput.messageSegments.add(textSegmentInput); 12 13feedItemInput.attachment = contentAttachmentInput; 14feedItemInput.body = messageBodyInput; 15feedItemInput.feedElementType = ConnectApi.FeedElementType.FeedItem; 16 17// Use a group ID for the subject ID. 18feedItemInput.subjectId = '0F9D00000000oOT'; 19 20ConnectApi.FeedElement feedElement = ConnectApi.ChatterFeeds.postFeedElement(null, feedItemInput, null); - 新しく投稿されたフィード項目の parent プロパティには、指定したグループの ConnectApi.ChatterGroupSummary が含まれます。
- レコード (ファイルや取引先など) への投稿
- このコードは、フィード項目をレコードに投稿し、グループにメンションします。subjectId に、レコード ID を指定します。
1ConnectApi.FeedItemInput feedItemInput = new ConnectApi.FeedItemInput(); 2ConnectApi.MentionSegmentInput mentionSegmentInput = new ConnectApi.MentionSegmentInput(); 3ConnectApi.MessageBodyInput messageBodyInput = new ConnectApi.MessageBodyInput(); 4ConnectApi.TextSegmentInput textSegmentInput = new ConnectApi.TextSegmentInput(); 5 6messageBodyInput.messageSegments = new List<ConnectApi.MessageSegmentInput>(); 7 8textSegmentInput.text = 'Does anyone know anyone with contacts here?'; 9messageBodyInput.messageSegments.add(textSegmentInput); 10 11// Mention a group. 12mentionSegmentInput.id = '0F9D00000000oOT'; 13messageBodyInput.messageSegments.add(mentionSegmentInput); 14 15feedItemInput.body = messageBodyInput; 16feedItemInput.feedElementType = ConnectApi.FeedElementType.FeedItem; 17 18// Use a record ID for the subject ID. 19feedItemInput.subjectId = '001D000000JVwL9'; 20 21ConnectApi.FeedElement feedElement = ConnectApi.ChatterFeeds.postFeedElement(null, feedItemInput, null); - 新しいフィード項目の parent プロパティは、subjectId に指定されたレコードタイプに応じて異なります。レコードタイプが File の場合、親は ConnectApi.FileSummary です。レコードタイプが Group の場合、親は ConnectApi.ChatterGroupSummary です。レコードタイプが User の場合、親は ConnectApi.UserSummary です。他のすべてのレコードタイプの場合、Account を使用するこの例と同様に、親は ConnectApi.RecordSummary です。
フィードからのフィード要素の取得
フィードからフィード項目を取得する方法は、どのフィード種別でも似ていますが同一ではありません。
- Company、DirectMessageModeration、DirectMessages、Home、Moderation、および PendingReview フィードからフィード要素を取得します。
- これらのフィードからフィード要素を取得する場合は、subjectId が不要な次のメソッドを使用します。
- getFeedElementsFromFeed(communityId, feedType)
- getFeedElementsFromFeed(communityId, feedType, pageParam, pageSize, sortParam)
- getFeedElementsFromFeed(communityId, feedType, recentCommentCount, density, pageParam, pageSize, sortParam)
- getFeedElementsFromFeed(communityId, feedType, recentCommentCount, density, pageParam, pageSize, sortParam, filter)
- getFeedElementsFromFeed(communityId, feedType, recentCommentCount, density, pageParam, pageSize, sortParam, filter, threadedCommentsCollapsed)
- Favorites フィードからのフィード要素の取得
- お気に入りフィードからフィード要素を取得するには、favoriteId を指定します。次のフィードの場合、subjectId は、コンテキストユーザの ID または別名 me である必要があります。
- Filter フィードからのフィード要素の取得
- 条件フィードからフィード要素を取得するには、keyPrefix を指定します。keyPrefix はオブジェクト ID の最初の 3 文字であり、オブジェクト種別を示します。subjectId は、コンテキストユーザの ID または別名 me である必要があります。
- getFeedElementsFromFilterFeed(communityId, subjectId, keyPrefix)
- getFeedElementsFromFilterFeed(communityId, subjectId, keyPrefix, pageParam, pageSize, sortParam)
- getFeedElementsFromFilterFeed(communityId, subjectId, keyPrefix, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam)
- Bookmarks、Files、Groups、Mute、News、People、Record、Streams、To、Topics、および UserProfile フィードからフィード要素を取得します。
- これらのフィード種別からフィード要素を取得するには、件名 ID を指定します。feedType が Record である場合、subjectId にはグループ ID を含む任意のレコード ID を指定できます。feedType が Streams である場合、subjectId はストリーム ID である必要があります。feedType が Topics である場合、subjectId はトピック ID である必要があります。feedType が UserProfile である場合、subjectId には任意のユーザ ID を指定できます。feedType がその他の値の場合、subjectId はコンテキストユーザの ID または別名 me である必要があります。
- getFeedElementsFromFeed(communityId, feedType, subjectId)
- getFeedElementsFromFeed(communityId, feedType, subjectId, pageParam, pageSize, sortParam)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, density, pageParam, pageSize, sortParam)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, density, pageParam, pageSize, sortParam, filter)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, density, pageParam, pageSize, sortParam, filter, threadedCommentsCollapsed)
- Record フィードからのフィード要素の取得
- subjectId に、レコード ID を指定します。
-
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, density, pageParam, pageSize, sortParam, showInternalOnly)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, density, pageParam, pageSize, sortParam, customFilter)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam, showInternalOnly)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam, showInternalOnly, filter)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam, showInternalOnly, customFilter)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam, showInternalOnly, filter, threadedCommentsCollapsed)
- getFeedElementsFromFeed(communityId, feedType, subjectId, recentCommentCount, elementsPerBundle, density, pageParam, pageSize, sortParam, showInternalOnly, customFilter, threadedCommentsCollapsed)