この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

フィードおよびフィード要素の使用

Chatter フィードは、フィード要素のコンテナです。抽象クラス ConnectApi.FeedElement は、フィード投稿を表す ConnectApi.FeedItem クラスと、フィードのバンドルおよびおすすめを表す ConnectApi.GenericFeedElement クラスの親クラスです。

Salesforce ヘルプでは、フィード項目を投稿、バンドルをバンドル投稿と呼んでいます。

メモ

機能

フィードを多様化する取り組みの一環として、フィード要素の持つさまざまな機能性を個々の機能に分割しました。機能では、一貫した方法でフィードを操作できます。フィード要素で使用できる機能を判別するためにフィード要素種別を調べないでください。使用可能な機能を明示的に示す機能を調べてください。機能が存在するかどうかを確認することで、フィード要素に対してクライアントが実行できる操作を判別します。

ConnectApi.FeedElement.capabilities プロパティには機能セットが保持されます。

機能には、ある操作が可能であることを示す情報と、その操作に関連付けられたデータが含まれます。フィード要素に機能プロパティが存在する場合、機能に関連付けられたデータがまだなくてもその機能を使用できます。たとえば、chatterLikes 機能プロパティがフィード要素に存在している場合、コンテキストユーザーはそのフィード要素にいいね! と言うことができます。その機能プロパティがフィード要素に存在しない場合、そのフィード要素にいいね! と言うことはできません。

フィード要素を投稿するときに、ConnectApi.FeedElementInput.capabilities プロパティで特性を指定します。

Salesforce UI でのフィード項目の表示

クライアントは ConnectApi.FeedElement.capabilities プロパティを使用して、フィード要素で可能な操作やフィード要素を表示する方法を判別できます。ConnectApi.FeedItem 以外のすべてのフィード要素のサブクラスでは、クライアントはサブクラスの種別を知る必要はありません。代わりに、機能を確認することができます。フィード項目には機能がありますが、actor などのプロパティもいくつかあり、これらは機能として公開されていません。このため、クライアントは他のフィード要素と少し異なる方法でフィード項目を処理する必要があります。

Salesforce UI では、1 つのレイアウトを使用して、すべてのフィード項目が表示されます。この単一レイアウトにより、一貫したフィード項目のビューが顧客に提供され、容易に UI を作成する手段が開発者に提供されます。このレイアウトには常に同じ要素が含まれ、この要素は常に同じ位置にあります。変更されるのは、レイアウト要素の内容のみです。

レイアウト要素が強調表示されたフィード項目

次のフィード項目 (ConnectApi.FeedItem) レイアウト要素があります。

  1. アクター (ConnectApi.FeedItem.actor) — フィード項目の作成者の写真またはアイコン (作成者は、フィード項目種別レベルで上書きできます。たとえば、ダッシュボードスナップショットフィード項目種別には、作成者としてダッシュボードが表示されます)。
  2. ヘッダー (ConnectApi.FeedElement.header) — フィード項目のコンテキスト。同じフィード項目に、誰がどこに投稿したかに応じて異なるヘッダーを設定できます。たとえば、Ted がこのフィード項目をグループに投稿しています。

    タイムスタンプ (ConnectApi.FeedElement.relativeCreatedDate) — フィード項目が投稿された日時。フィード項目の作成後 2 日を経過していない場合、日時は相対的なローカライズされた文字列として書式設定されます (「17 分前」など)。それ以外の場合は、日時は絶対的なローカライズされた文字列として書式設定されます。

  3. 内容 (ConnectApi.FeedElement.body) — すべてのフィード項目には内容があります。ユーザーがフィード項目のテキストを指定しない場合は、内容が null になることがあります。内容は null になる可能性があるため、テキスト表示のデフォルトケースとして使用できません。代わりに、ConnectApi.FeedElement.header.text プロパティを使用します。このプロパティには常に値が含まれます。
  4. 補助内容 (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 つのフィード変更追跡について fieldNameoldValue、および newValue プロパティを表示します。フィード変更追跡が 3 つ以上ある場合は、バンドルが [すべての更新を表示] リンクを表示します。

フィード要素の表示

ユーザーに表示されるフィード要素は、システム管理者によるフィード追跡、共有ルール、および項目レベルセキュリティの設定に応じて異なります。たとえば、ユーザーにレコードへのアクセス権がない場合、そのレコードの更新は表示されません。フィード要素の親を表示できるユーザーは、そのフィード要素を表示できます。通常、ユーザーには次のフィード更新が表示されます。

  • ユーザーに @メンションしているフィード要素 (ユーザーがそのフィード要素の親にアクセスできる場合)
  • ユーザーがメンバーであるグループに @メンションしているフィード要素
  • ユーザーが親レコードを表示できるレコードに対するレコード項目の変更 (User、Group、および File レコードを含む)
  • ユーザーに投稿されたフィード要素
  • ユーザーが所有するか、ユーザーがメンバーであるグループに投稿されたフィード要素
  • 標準およびカスタムレコードのフィード要素 (ToDo、行動、リード、取引先、ファイルなど)

フィードの種別

フィードには多くの種別があります。各フィード種別は、フィード要素のコレクションを定義します。

フィード要素のコレクションはリリースが変わると変更される可能性があります。

重要

お気に入りを除くすべてのフィード種別は ConnectApi.FeedType 列挙として公開され、いずれかの ConnectApi.ChatterFeeds.getFeedElementsFromFeed メソッドに渡されます。次の例は、コンテキストユーザーのニュースフィードとトピックフィードからフィード要素を取得します。
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 メソッドを使用すると、非常に簡単に効率よくフィード項目を投稿できます。これらのメソッドでは、postFeedItem メソッドとは異なり、フィード種別を渡す必要がないためです。投稿できるフィード要素種別はフィード項目のみです。

ヒント

フィード項目を投稿するには、次のメソッドを使用します。

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 です。

フィードからのフィード要素の取得

フィード要素を含むフィードを返すには、次のメソッドをコールします。フィード要素種別には、フィード項目、バンドル、およびおすすめが含まれます。

ヒント

フィードからフィード項目を取得する方法は、どのフィード種別でも似ていますが同一ではありません。

CompanyDirectMessageModerationDirectMessagesHomeModeration、および 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)
BookmarksFilesGroupsMuteNewsPeopleRecordStreamsToTopics、および UserProfile フィードからフィード要素を取得します。
これらのフィード種別からフィード要素を取得するには、件名 ID を指定します。feedTypeRecord である場合、subjectId にはグループ ID を含む任意のレコード ID を指定できます。feedTypeStreams である場合、subjectId はストリーム ID である必要があります。feedTypeTopics である場合、subjectId はトピック ID である必要があります。feedTypeUserProfile である場合、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 を指定します。

レコードは、フィードをサポートする任意のタイプのレコードにすることができます (グループを含む)。Salesforce UI のグループページ上のフィードは、レコードフィードです。

ヒント

  • 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)