フィードおよびフィード要素の使用
機能
フィードを多様化する取り組みの一環として、フィード要素の持つさまざまな機能性を個々の機能に分割しました。機能では、一貫した方法でフィードを操作できます。フィード要素で使用できる機能を判別するためにフィード要素種別を調べないでください。使用可能な機能を明示的に示す機能を調べてください。機能が存在するかどうかを確認することで、フィード要素に対してクライアントが実行できる操作を判別します。
ConnectApi.FeedElement.capabilities プロパティには機能セットが保持されます。
機能には、ある操作が可能であることを示す情報と、その操作に関連付けられたデータが含まれます。フィード要素に機能プロパティが存在する場合、機能に関連付けられたデータがまだなくてもその機能を使用できます。たとえば、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 つのバンドルに集約されます。個々のフィード要素を表示するには、バンドルをクリックします。

バンドルは、ConenctApi.BundleCapability を備えた ConnectApi.GenericFeedElement オブジェクトです (これは ConnectApi.FeedElement の具象サブクラスです)。次のバンドルレイアウト要素があります。
- ヘッダー (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 — Experience Cloud サイトの管理トピックに関連付けられたすべてのフィード項目が含まれます。
- 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.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 8mentionSegmentInput.id = '005RR000000Dme9'; 9messageBodyInput.messageSegments.add(mentionSegmentInput); 10 11textSegmentInput.text = 'Could you take a look?'; 12messageBodyInput.messageSegments.add(textSegmentInput); 13 14feedItemInput.body = messageBodyInput; 15feedItemInput.feedElementType = ConnectApi.FeedElementType.FeedItem; 16feedItemInput.subjectId = '0F9RR0000004CPw'; 17 18ConnectApi.FeedElement feedElement = ConnectApi.ChatterFeeds.postFeedElement(Network.getNetworkId(), feedItemInput); - 新しく投稿されたフィード項目の 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); - 新しいフィード項目の 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 である必要があります。
- getFeedElements(communityId, subjectId, favoriteId)
- getFeedElements(communityId, subjectId, favoriteId, pageParam, pageSize, sortParam)
- getFeedElements(communityId, subjectId, favoriteId, recentCommentCount, elementsPerBundle, pageParam, pageSize, sortParam)
- 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)