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

フィルタ済みストリーム Webhooks API の利用を開始する

v2 フィルタ済みストリーム Webhooks API は、どのルールでフィルタするかを設定する点では、v2 フィルタ済みストリームエンドポイント と似ています。違いは、ルールに一致した投稿の配信方法にあります。
  • v2 フィルタ済みストリームエンドポイントの場合は、永続的な接続を確立し、ルールに一致した投稿を受信し続ける必要があります。
  • このフィルタ済みストリーム Webhook エンドポイントの場合は、Webhook を登録すると、X がルールに一致した投稿をその Webhook に配信します。
このガイドでは、フィルタ済みストリーム Webhooks エンドポイントを使って投稿をフィルタし、受信する方法を説明します。ここでは次の 3 つのステップを行います。
  1. フィルタ済みストリームのルールを設定する
  2. Webhook を作成する
  3. Filtered Stream インスタンスを Webhook に関連付ける
Filtered Stream インスタンスを Webhook に関連付けると、X はルールに一致した投稿をその Webhook に送信します。

フィルタ済みストリームルールの設定

フィルタ済みストリームルールは、1 つ以上のオペレーターをブール論理と括弧で組み合わせて構成されており、どの投稿が webhook に配信されるかを定義するのに役立ちます。Filtered stream webhooks API は、ルールの作成と管理に v2 filtered stream endpoint と同じエンドポイント群を使用します。フィルタの構築方法を説明した 詳細なガイド も参照してください。

Webhook の作成

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

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

ルールを設定して webhook を作成したら、その webhook を Filtered Stream インスタンスにリンクします。これにより、条件にマッチしたポストイベントが webhook の URL に送信されます。 使用するエンドポイント: POST /2/tweets/search/webhooks/:webhook_id ストリーミングエンドポイント /2/tweets/search/stream で使用するものと同じクエリパラメータ (expansions、フィールド、メディアオプションなど) を指定できます。これにより、イベントペイロードに含めるデータをカスタマイズできます。 例:
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 
  } 
}
Tip: 冗長性を確保したり、異なるフィールドセットを受け取ったりするために、同じストリームに複数の webhook をリンクできます。各リンクごとに固有のパラメータを指定できます。 Filtered Stream インスタンスを webhook にリンクすると、以下のようにルールに一致する投稿の受信が始まります。
{
    "data": {
        "id": "1346889436626259968",
        "text": "Learn how to use the user Post timeline and user mention timeline endpoints in the X API v2 to explore Post… https://t.co/56a0vZUx7i",
        "created_at": "2021-01-06T18:40:40.000Z",
        "author_id": "2244994945"
    },
    "includes": {
        "users": [
            {
                "id": "2244994945",
                "name": "Developers",
                "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
    }
}