Saltar al contenido principal

Introducción a la API de webhooks del stream filtrado

La API de webhooks del stream filtrado en v2 es similar al endpoint del stream filtrado en v2 en cuanto a la configuración de las reglas de filtrado. La diferencia radica en el mecanismo de entrega de los Posts que coinciden con tus reglas.
  • En el caso del endpoint del stream filtrado en v2, debes establecer una conexión persistente y escuchar los Posts que coincidan con tus reglas.
  • En el caso de este endpoint de webhook del stream filtrado, registras tu webhook y X entrega a tu webhook los Posts que coincidan con tus reglas.
Esta guía explica cómo filtrar y recibir Posts usando los endpoints de webhooks del stream filtrado. Hay 3 pasos:
  1. Configurar tus reglas del stream filtrado
  2. Crear tu webhook
  3. Vincular tu instancia de Filtered Stream a tu webhook
Una vez que hayas vinculado tu instancia de Filtered Stream a tu webhook, X enviará a tu webhook los Posts que coincidan con tus reglas.

Configurar tus reglas de stream filtrado

Las reglas del stream filtrado se componen de uno o varios operadores combinados mediante lógica booleana y paréntesis, para definir qué Posts se entregarán a tus webhooks. La API de webhooks del stream filtrado utiliza el mismo conjunto de endpoints que el endpoint de stream filtrado v2 para crear y administrar reglas. Consulta esta guía detallada que muestra cómo crear filtros.

Creación de tu webhook

Crea un webhook para recibir eventos registrando una URL HTTPS de acceso público en la X API. Los webhooks deben atender solicitudes GET para la validación CRC y solicitudes POST para las cargas de eventos. Sigue la documentación de introducción a webhooks para conocer los pasos detallados para crear y administrar webhooks. Nota: Si ya utilizas webhooks para la Account Activity API (AAA), los webhooks configurados para ese fin son exactamente los mismos aquí. De hecho, puedes usar el mismo endpoint de webhook que utilizas para AAA en esta API, si cuentas con la capacidad y puedes separar los eventos.

Vincular tu instancia de stream filtrado a tu webhook

Una vez que tengas las reglas configuradas y el webhook creado, vincula el webhook a tu instancia de stream filtrado. Esto enruta los eventos de Post coincidentes a tu URL de webhook. Usa el endpoint: POST /2/tweets/search/webhooks/:webhook_id Puedes incluir parámetros de query idénticos a los usados en el endpoint de stream /2/tweets/search/stream, como expansions, fields y opciones de media. Esto personaliza los data incluidos en las cargas útiles de eventos. Ejemplo:
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' 
Ejemplo de respuesta correcta:
{ 
  "data": { 
    "provisioned": true
  } 
}
Consejo: Puede vincular varios webhooks al mismo stream para redundancia o para recibir distintos conjuntos de campos. Cada enlace puede especificar parámetros únicos. Una vez que tenga su instancia de Filtered Stream vinculada a su webhook, comenzará a recibir Posts que coincidan con sus reglas, como se muestra a continuación:
{
    "data": {
        "id": "1346889436626259968",
        "text": "Aprende a usar los endpoints de cronología de Posts de usuario y cronología de menciones de usuario en X API v2 para explorar Posts… https://t.co/56a0vZUx7i",
        "created_at": "2021-01-06T18:40:40.000Z",
        "author_id": "2244994945"
    },
    "includes": {
        "users": [
            {
                "id": "2244994945",
                "name": "Desarrolladores",
                "username": "Xdevelopers",
                "created_at": "2013-12-14T04:35:55Z",
                "protected": false
            }
        ]
    },
    "matching_rules": [
        {
            "id": "120897978112909812",
            "tag": "api-posts"
        }
    ]
}

Recuperar webhooks vinculados al stream filtrado

Recupera una lista de todos los webhooks actualmente vinculados a tu stream filtrado:
GET /2/tweets/search/stream/webhooks 
Ejemplo de respuesta:
{
    "data": {
        "links": [
            {
                "application_id": "29893711",
                "business_user_id": "1877374016438091776",
                "fields": [
                    "user.fields=username",
                    "name",
                    "id",
                    "expansions=author_id"
                ],
                "instance_id": "1877375130462289920",
                "webhook_id": "1952390923729424384"
            }
        ]
    }
}

Desvincular su webhook del stream filtrado

Para dejar de recibir eventos en un webhook específico, desvincúlelo usando:
DELETE /2/tweets/search/webhooks/:webhook_id
La respuesta será la siguiente:
{
    "data": {
        "deleted": true
    }
}
I