メインコンテンツへスキップ

Filtered stream webhooks API の開始方法

v2 Filtered stream webhooks API は、フィルタリング用ルールの設定という点で v2 filtered stream endpoint と類似しています。違いは、ルールに一致した Posts の配信方法にあります。
  • v2 filtered stream endpoint の場合は、永続的な接続を確立し、ルールに一致する Posts を受信し続ける必要があります。
  • 本 filtered stream webhook endpoint の場合は、webhook を登録すると、X がルールに一致する Posts をその webhook に配信します。
このガイドでは、filtered stream webhooks endpoints を使用して、どのようにフィルタリングし、Posts を受信するかを説明します。手順は 3 つあります。
  1. Filtered stream のルールを設定する
  2. webhook を作成する
  3. Filtered Stream インスタンスを webhook にリンクする
Filtered Stream インスタンスを webhook にリンクすると、X はルールに一致した Posts をその webhook に送信します。

Filtered stream ルールの設定

Filtered stream のルールは、1つ以上のオペレーターで構成され、ブール論理と括弧を用いて組み合わせることで、どの Posts が webhook に配信されるかを定義します。Filtered stream webhooks API は、ルールの作成と管理にあたり、v2 filtered stream endpoint と同じ一連の endpoint を使用します。フィルターの作成方法を解説した詳細ガイドもご参照ください。

webhook の作成

外部からアクセス可能な HTTPS URL を X API に登録し、イベント受信用の webhook を作成します。webhook は CRC 検証用の GET リクエストと、イベントペイロード受信用の POST リクエストの両方を処理する必要があります。webhook の作成と管理に関する詳細な手順は、Webhooks Introduction documentation を参照してください。 注: すでに Account Activity API (AAA) で webhook を利用している場合、その設定はここでもまったく同じです。実際、処理能力に余裕があり、イベントを分離できるのであれば、この API でも AAA で使用しているのと同じ webhook endpoint を使用できます。

Filtered Stream インスタンスを webhook にリンクする

ルールを設定して webhook を作成したら、webhook を Filtered Stream インスタンスにリンクします。これにより、マッチした Post のイベントが webhook の URL に配送されます。 使用する endpoint: POST /2/tweets/search/webhooks/:webhook_id /2/tweets/search/stream の streaming endpoint で使用するものと同一の query パラメータ(expansions、fields、メディアオプションなど)を指定できます。これにより、イベントのペイロードに含まれる data をカスタマイズできます。 例:
curl --request POST \ 
  --url 
'https://api.x.com/2/tweets/search/webhooks/123456789012345678?ex
pansions=author_id&user.fields=username,name,id' \ 
  --header 'Authorization: Bearer $BEARER_TOKEN' 
成功時のレスポンス例:
{ 
  "data": { 
    "provisioned": true
  } 
}
ヒント: 冗長化や異なるフィールドセットを受信するために、同じ stream に複数の webhook をリンクできます。各リンクごとに固有のパラメータを指定できます。 Filtered stream のインスタンスを webhook にリンクすると、以下のように、設定したルールに一致する Posts の受信が始まります。
{
    "data": {
        "id": "1346889436626259968",
        "text": "X API v2のユーザーPostタイムラインとユーザーメンションタイムラインのendpointを使用してPostを探索する方法を学ぶ… https://t.co/56a0vZUx7i",
        "created_at": "2021-01-06T18:40:40.000Z",
        "author_id": "2244994945"
    },
    "includes": {
        "users": [
            {
                "id": "2244994945",
                "name": "開発者",
                "username": "Xdevelopers",
                "created_at": "2013-12-14T04:35:55Z",
                "protected": false
            }
        ]
    },
    "matching_rules": [
        {
            "id": "120897978112909812",
            "tag": "api-posts"
        }
    ]
}

Filtered stream にリンクされている webhook の取得

現在、あなたの Filtered stream にリンクされているすべての webhook の一覧を取得します。
GET /2/tweets/search/stream/webhooks 
応答例:
{
    "data": {
        "links": [
            {
                "application_id": "29893711",
                "business_user_id": "1877374016438091776",
                "fields": [
                    "user.fields=username",
                    "name",
                    "id",
                    "expansions=author_id"
                ],
                "instance_id": "1877375130462289920",
                "webhook_id": "1952390923729424384"
            }
        ]
    }
}

Filtered stream から webhook のリンクを解除する

特定の webhook でイベントの受信を停止するには、次を実行してリンクを解除します:
DELETE /2/tweets/search/webhooks/:webhook_id
レスポンスは次のようになります。
{
    "data": {
        "deleted": true
    }
}
I