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

filtered stream webhooks API の開始方法

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

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

フィルタードストリームのルールは、ブールロジックと括弧で組み合わせる一つ以上のオペレーターで構成され、どのPostがあなたのwebhookに配信されるかを定義します。フィルタードストリームの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 インスタンスにリンクします。これにより、マッチした Post のイベントが webhook の URL にルーティングされます。 使用するエンドポイント: POST /2/tweets/search/webhooks/:webhook_id ストリーミングエンドポイント /2/tweets/search/stream と同一のクエリパラメータ(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 
  } 
}
ヒント: 冗長化や異なるフィールドセットを受け取るために、同じストリームに複数の Webhook を関連付けることができます。各関連付けごとに固有のパラメータを指定できます。 Webhook に Filtered Stream インスタンスを設定すると、以下のように、設定したルールに一致する Post の受信が始まります。
{
    "data": {
        "id": "1346889436626259968",
        "text": "X API v2のユーザーPostタイムラインとユーザーメンションタイムラインエンドポイントを使用して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
    }
}