6

Facebook の簡単な機能は、友達からの投稿だけでなく、友達がシェアした投稿も表示することです。共有された投稿の場合、タイトルは「Kelly and 4 other」共有 XYZ 投稿です。さらに、複数の友人が投稿を共有した場合、Facebook はそれらを集約して投稿を 1 回だけ表示します。複数回表示されることはありません。Facebook は、フラット フィードと集約フィードをすべて同じタイムライン ビューに表示しているようです。

ユーザーのタイムライン (フラット フィード) で集約フィードとフラット フィードの種類を表示するフィードの方法が必要です。次のフィード設定があります。

タイムライン フィード (フラット)

ユーザー フィード (フラット)

ユーザー A がユーザー B をフォローするたびに、getstream を呼び出してユーザー A のタイムライン フィードを更新し、ユーザー B のユーザー フィードをフォローします。

上記に加えて、ユーザーに表示するタイムラインの例として、次のことを行いたいと考えています。

フラットポスト1(フォローユーザーAより)

フラットポスト2(下記ユーザーBより)

集約された投稿 1 (あなたがフォローしている 4 人が投稿 X を共有しました)

フラットポスト3(下記ユーザーAより)

フラットポスト4(下記ユーザーCより)

集約投稿 2 (あなたがフォローしている 3 人が投稿 Y を高く評価しました)

今これを行う方法は、getstream からタイムライン フィードのアクティビティをフェッチしてから、集約フィードもフェッチして、バックエンドで 2 つを何らかの方法で混合する必要があるようです。

4

1 に答える 1

8

これは、単一の集約フィードを使用して集約ルールを微調整することで実現できます。あなたの場合、必要なものは次のようです。

  • 同じ投稿の共有をまとめてグループ化する
  • 単一の活動に関する投稿を保持する
  • 同じ投稿のいいねをグループ化する

次のような集計ルールが機能するはずです (テストされていません)。

{% if verb.infinitive == 'like' %}
    "likes"-{{ object }}
{% elif verb.infinitive == 'share' %}
    "share"-{{ object }}
{% elif verb.infinitive == 'post' %}
    "post"-{{ object }}
{% else %}
    {{ actor }}-{{ verb.infinitive }}-{{ time.strftime('%H') }}
{% endif %}

この作業がどのように行われるかを簡単に説明します。集計ルールは、アクティビティをグループ化する方法を決定するために使用されます。これらは、アクティビティをパラメータとして実行される関数として見ることができます。実際の集計ルールは、文字列を出力する Jinja2 テンプレートに似ています。

2 つのアクティビティの出力が同じ場合、それらは同じ集計アクティビティに属します。

例: アクティビティTom likes post "xyz"James likes post "xyz"will は両方とも出力likes-xyzされるため、グループ化されます。一方、アクティビティSam posts "xyz"は出力され、post-xyzという名前の投稿が 1 つしかないと仮定するとxyz、他のアクティビティとグループ化されることはありません。

私の提案は、いくつかのサンプル データをフィードに送信し、Stream のダッシュボードで利用可能なプレビュー機能を使用して集計ルールを微調整することです。

于 2016-08-15T01:09:04.453 に答える