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

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

API バージョン 30.0 以前では、Chatter フィードはフィード項目のコンテナでした。API バージョン 31.0 では、フィードの定義が拡張され、フィード項目モデルに完全には適合しない新しいオブジェクトが追加されました。Chatter フィードは、フィード要素のコンテナになりました。抽象クラス ConnectApi.FeedElement は、既存の ConnectApi.FeedItem クラスに対する親クラスとして導入されました。フィード要素が共有するプロパティのサブセットは、ConnectApi.FeedElement クラスに移動しました。フィードとフィード要素は Chatter の中核部分であるため、Chatter in Apex を使用してアプリケーションを開発するには、これらの理解が不可欠です。

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

メモ

機能

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

ConnectApi.FeedElement.capabilities プロパティには、ConnectApi.FeedElementCapabilities オブジェクトが保持されます。このオブジェクトには機能オブジェクトのセットが保持されます。

機能オブジェクトには、機能が使用可能であるという情報と、その機能に関連付けられたデータが含まれます。フィード要素に機能プロパティが存在する場合、機能に関連付けられたデータがまだなくてもその機能を使用できます。たとえば、chatterLikes 機能プロパティがフィード要素に存在する場合 (chatterLikes.page.items プロパティ内のいいね! リストにいいね! が含まれているかどうかに関係なく)、コンテキストユーザはそのフィード要素にいいね! と言うことができます。その機能プロパティがフィード要素に存在しない場合、そのフィード要素にいいね! と言うことはできません。

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

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

ConnectApi.FeedItemConnectApi.FeedElement のサブクラスです。

メモ

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

ユーザに一貫した方法でフィード項目を表示し、開発者に容易に UI を作成する手段を提供するために、Salesforce UI では、1 つのレイアウトを使用してすべてのフィード項目を表示しています。このレイアウトには常に同じ要素が含まれ、この要素は常に同じ位置にあります。変化するのはレイアウト要素のコンテンツのみです。

レイアウト要素が強調表示されたフィード項目 次のフィード項目 (ConnectApi.FeedItem) レイアウト要素があります。
  1. アクター (ConnectApi.FeedItem.actor) — フィード項目の作成者の写真またはアイコン (作成者は、フィード項目種別レベルで上書きできます。たとえば、ダッシュボードスナップショットフィード項目種別には、作成者としてダッシュボードが表示されます)。
  2. ヘッダー (ConnectApi.FeedElement.header) — コンテキストを提供します。同じフィード項目に、誰がどこに投稿したかに応じて異なるヘッダーを設定できます。たとえば、Gordon がこのフィード項目を自分のプロファイルに投稿したとします。次にそのフィード項目をグループと共有すると、グループフィードのフィード項目のヘッダーが「Gordon Johnson (元の投稿者: Gordon Johnson)」になります。「元の投稿者」テキストが Gordon のプロファイルのフィード項目へのリンクになります。
  3. 内容 (ConnectApi.FeedElement.body) — すべてのフィード項目には内容がありますが、ユーザがフィード項目のテキストを指定しない場合は、内容が null になることがあります。内容は null になる可能性があるため、テキスト表示のデフォルトケースとして使用できません。代わりに、ConnectApi.FeedElement.header.text プロパティを使用します。このプロパティには常に値が含まれます。
  4. 補助内容 (ConnectApi.FeedElement.capabilities) — 機能の視覚化。「機能」を参照してください。

    attachment プロパティは、API バージョン 32.0 以降でサポートされていません。代わりに、ConnectApi.FeedElementCapabilities オブジェクトを保持する capabilities プロパティを使用して、フィード要素に表示する項目を検出します。

    重要

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

Salesforce でのフィード項目以外のフィード要素の表示方法

「機能」セクションで学んだように、クライアントは ConnectApi.FeedElement.capabilities プロパティを使用して、フィード要素で可能な操作やフィード要素を表示する方法を判別する必要があります。このセクションでは、フィード要素の表示方法の一例としてバンドルを使用しますが、これらのプロパティはどのフィード要素でも使用できます。機能によって、フィードのすべてのコンテンツを一貫して処理できます。

バンドル投稿にはフィード追跡変更が含まれます。Salesforce1 ダウンロード可能アプリケーションでは、バンドル投稿がレコードフィードのみにあります。

メモ

きれいに整理されたフィードをユーザに提供するために、Salesforce では、フィード変更追跡が 1 つのバンドルに集約されます。個々のフィード要素を表示するには、バンドルをクリックします。

Salesforce モバイルブラウザアプリケーションのフィード項目のバンドル

バンドルは、ConenctApi.BundleCapability を備えた ConnectApi.GenericFeedElement オブジェクトです (これはConnectApi.FeedElement の具象サブクラスです)。次のバンドルレイアウト要素があります。
  1. ヘッダー (ConnectApi.FeedElement.header) — フィード変更追跡バンドルの場合、このテキストは「このレコードは更新されました。」です。

    ヘッダーの下にある時間は、ConnectApi.FeedElement.relativeCreatedDate プロパティです。

  2. 補助内容 (ConnectApi.FeedElement.capabilities.bundle.changes) — バンドルは、バンドル内の最初の 2 つのフィード変更追跡について fieldNameoldValue、および newValue プロパティを表示します。フィード変更追跡が 3 つ以上ある場合、バンドルは [すべての更新を表示] リンクを表示します。

フィード要素の表示

ユーザに表示されるフィード要素は、システム管理者によるフィード追跡、共有ルール、および項目レベルセキュリティの設定に応じて異なります。たとえば、ユーザにレコードへのアクセス権がない場合、そのレコードの更新は表示されません。フィード要素の親を表示できるユーザは、そのフィード要素を表示できます。通常、ユーザには次のフィード更新が表示されます。
  • ユーザに @メンションしているフィード要素 (ユーザがそのフィード要素の親にアクセスできる場合)
  • ユーザがメンバーであるグループに @メンションしているフィード要素
  • ユーザが親レコードを表示できるレコードに対するレコード項目の変更 (User、Group、および File レコードを含む)
  • ユーザに投稿されたフィード要素
  • ユーザが所有するか、ユーザがメンバーであるグループに投稿されたフィード要素
  • 標準およびカスタムレコードのフィード要素 (ToDo、行動、リード、取引先、ファイルなど)

フィード種別

フィードには多くの種別があります。各フィード種別は、フィード要素のコレクションを定義するアルゴリズムです。

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

重要

フィルタとお気に入りを除くすべてのフィード種別は ConnectApi.FeedType Enum として公開され、いずれかの ConnectApi.ChatterFeeds.getFeedElementsFromFeed メソッドに渡されます。次の例は、コンテキストユーザのニュースフィードとトピックフィードからフィード要素を取得します。

フィルタフィードを取得するには、いずれかの ConnectApi.ChatterFeeds.getFeedElementsFromFilterFeed メソッドをコールします。お気に入りフィードを取得するには、いずれかの ConnectApi.ChatterFavorites.getFeedElements メソッドをコールします。

フィード種別とその説明は、次のとおりです。
  • Bookmarksコンテキストユーザがブックマークとして保存したすべてのフィード項目が含まれます。
  • Company種別 TrackedChange のフィード項目を除くすべてのフィード項目が含まれます。ユーザがフィード項目を表示するには、親への共有アクセス権が必要です。
  • Filesコンテキストユーザがフォローしている人またはグループによって投稿されたファイルを含むすべてのフィード項目が含まれます。
  • Filter — 指定したオブジェクト種別の親を持つフィード項目を含むように絞り込まれたニュースフィードが含まれます。
  • Groupsコンテキストユーザが所有するか、メンバーであるすべてのグループのすべてのフィード項目が含まれます。
  • Home — コミュニティの管理トピックに関連付けられたすべてのフィード項目が含まれます。
  • Moderationモデレーション用にフラグが設定されたすべてのフィード項目が含まれます。このコミュニティモデレーションフィードは、「コミュニティフィードのモデレート」権限を持つユーザのみが使用できます。
  • Mute — コンテキストユーザがミュートしたすべてのフィード項目が含まれます。
  • Newsコンテキストユーザがフォローする人、ユーザがメンバーとなっているグループ、およびユーザがフォローするファイルとレコードからのすべての更新が含まれます。また、親がコンテキストユーザであるレコード、およびコンテキストユーザをメンションするかコンテキストユーザがメンバーとなっているグループをメンションするすべてのフィード項目とコメントのすべての更新も含まれます。
  • Peopleコンテキストユーザがフォローしているすべての人によって投稿されたすべてのフィード項目が含まれます。
  • Record親が指定したレコードであるすべてのフィード項目が含まれます。レコードは、グループ、ユーザ、オブジェクト、ファイル、その他の標準またはカスタムオブジェクトの場合があります。レコードがグループの場合、フィードにはそのグループにメンションしているフィード項目も含まれます。レコードがユーザの場合、フィードにはそのユーザに対するフィード項目のみが含まれます。別のユーザのレコードフィードは取得できません。
  • Toコンテキストユーザのメンションを含むすべてのフィード項目、コンテキストユーザがコメントしたフィード項目、コンテキストユーザが作成し、コメントされたフィード項目が含まれます。
  • Topics指定したトピックを含むすべてのフィード項目が含まれます。
  • UserProfile — フィードで追跡可能なレコードをユーザが変更したときに作成されたフィード項目、親がユーザであるフィード項目、およびユーザに @メンションしているフィード項目が含まれます。このフィードは、グループ更新など、より多くのフィード項目を返すニュースフィードとは異なります。別のユーザのプロファイルフィードを取得できます。
  • Favorites — コンテキストユーザが保存したお気に入りが含まれます。お気に入りには、フィード検索、リストビュー、およびトピックがあります。

postFeedElement を使用したフィード項目の投稿

postFeedElement メソッドを使用すると、非常に簡単に効率よくフィード項目を投稿できます。これらのメソッドでは、postFeedItem メソッドとは異なり、フィード種別を渡す必要がないためです。API バージョン 31.0 以降、投稿できるフィード要素種別はフィード項目のみです。ただし、今後、他の種別が追加される可能性があります。

ヒント

フィード項目を投稿するには、次のメソッドを使用します。
postFeedElement(String communityId, String subjectId, ConnectApi.FeedElementType feedElementType, String text)
コンテキストユーザからのフィード要素をプレーンテキストで投稿します。
postFeedElement(String communityId, ConnectApi.FeedElementInput feedElement, ConnectApi.BinaryInput feedElementFileUpload)
コンテキストユーザからのフィード要素を投稿します。このメソッドは、メンションやハッシュタグトピックなどのリッチテキストの投稿、フィード要素へのファイルの添付、およびアクションリンクとフィード要素の関連付けに使用します。また、このメソッドを使用して、フィード要素の共有やコメントの追加を行うこともできます。

フィード項目を投稿するときには、標準オブジェクトまたはカスタムオブジェクトの子を作成します。subjectId パラメータ、または feedElement パラメータで渡す ConnectApi.FeedElementInput オブジェクトの subjectId プロパティに、親オブジェクトを指定します。subjectId パラメータの値によって、フィード項目が表示されるフィードが決まります。返される ConnectApi.FeedItem オブジェクトの parent プロパティには、親オブジェクトに関する情報が含まれます。

次のタスクを実行するには、次のメソッドを使用します。
自分への投稿
このコードでは、フィード項目をコンテキストユーザに投稿します。subjectId に、コンテキストユーザの ID の別名である me を指定します。コンテキストユーザの ID を指定することもできます。
新しく投稿されたフィード項目の parent プロパティには、コンテキストユーザの ConnectApi.UserSummary が含まれます。
別のユーザへの投稿
このコードでは、フィード項目をコンテキストユーザ以外のユーザに投稿します。subjectId に、対象ユーザのユーザ ID を指定します。
新しく投稿されたフィード項目の parent プロパティには、対象ユーザの ConnectApi.UserSummary が含まれます。
グループへの投稿
このコードは、コンテンツ添付ファイルを含むフィード項目をグループに投稿します。subjectId は、グループ ID を指定します。
新しく投稿されたフィード項目の parent プロパティには、指定したグループの ConnectApi.ChatterGroupSummary が含まれます。
レコード (ファイルや取引先など) への投稿
このコードは、フィード項目をレコードに投稿し、グループにメンションします。subjectId に、レコード ID を指定します。
新しいフィード項目の parent プロパティは、subjectId に指定されたレコードタイプに応じて異なります。レコードタイプが File の場合、親は ConnectApi.FileSummary です。レコードタイプが Group の場合、親は ConnectApi.ChatterGroupSummary です。レコードタイプが User の場合、親は ConnectApi.UserSummary です。他のすべてのレコードタイプの場合、Account を使用するこの例と同様に、親は ConnectApi.RecordSummary です。

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

フィード要素を含むフィードを返すには、次のメソッドをコールします。API バージョン 31.0 では、フィード要素種別はフィード項目とバンドルのみですが、これは今後変更される可能性があります。

ヒント

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

Company フィード、Home フィード、および Moderation フィードからのフィード要素の取得
会社フィード、ホームフィードまたはモデレーションフィードからフィード要素を取得する場合は、subjectId が不要な次のメソッドを使用します。
Favorites フィードからのフィード要素の取得
お気に入りフィードからフィード要素を取得するには、favoriteId を指定します。次のフィードの場合、subjectId は、コンテキストユーザの ID または別名 me である必要があります。
Filter フィードからのフィード要素の取得
条件フィードからフィード要素を取得するには、keyPrefix を指定します。keyPrefix はオブジェクト ID の最初の 3 文字であり、オブジェクト種別を示します。subjectId は、コンテキストユーザの ID または別名 me である必要があります。
BookmarksFilesGroupsMuteNewsPeopleRecordToTopics、および UserProfile フィードからのフィード要素の取得
これらのフィード種別からフィード要素を取得するには、件名 ID を指定します。feedTypeRecord である場合、subjectId にはグループ ID を含む任意のレコード ID を指定できます。feedTypeTopics である場合、subjectId はトピック ID である必要があります。feedTypeUserProfile である場合、subjectId には任意のユーザ ID を指定できます。feedType がその他の値の場合、subjectId はコンテキストユーザの ID または別名 me である必要があります。
Record フィードからのフィード要素の取得
subjectId に、レコード ID を指定します。

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

ヒント