Saltar al contenido principal

Introducción a la API de webhooks de flujo filtrado

La API v2 de webhooks de flujo filtrado es similar al endpoint v2 de flujo filtrado en cuanto a la configuración de reglas de filtrado. La diferencia radica en el mecanismo de entrega de los Posts que coinciden con tus reglas.
  • En el caso del endpoint v2 de flujo filtrado, debes establecer una conexión persistente y escuchar los Posts que coincidan con tus reglas.
  • En el caso de este endpoint de webhook de flujo filtrado, registras tu webhook y X entrega los Posts que coincidan con tus reglas a tu webhook.
Esta guía explica cómo filtrar y recibir Posts mediante los endpoints de webhooks de flujo filtrado. Hay 3 pasos:
  1. Configurar tus reglas de flujo 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á los Posts que coincidan con tus reglas a tu webhook.

Configuración de sus reglas de flujo filtrado

Las reglas de flujo filtrado se componen de uno o más operadores que se combinan mediante lógica booleana y paréntesis para definir qué Publicaciones se entregarán a sus webhooks. La API de webhooks de flujo filtrado utiliza el mismo conjunto de endpoints que el endpoint de flujo filtrado v2 para crear y gestionar reglas. Consulte esta guía detallada que muestra cómo puede construir filtros.

Creando su webhook

Cree un webhook para recibir eventos registrando una URL HTTPS accesible públicamente con la X API. Los webhooks deben manejar solicitudes GET para la validación CRC y solicitudes POST para las cargas útiles de eventos. Siga la documentación de Introducción a webhooks para pasos detallados sobre la creación y gestión de webhooks. Nota: Si ya utiliza webhooks para la Account Activity API (AAA), los webhooks configurados para eso son exactamente los mismos aquí. De hecho, puede utilizar el mismo endpoint de webhook que usa para AAA para esta API, si tiene el ancho de banda y puede separar los eventos.

Vincular su instancia de Filtered Stream con su webhook

Una vez que sus reglas estén configuradas y el webhook se haya creado, vincule el webhook a su instancia de Filtered Stream. Esto enruta los eventos de publicaciones coincidentes a la URL de su webhook. Utilice el endpoint: POST /2/tweets/search/webhooks/:webhook_id Puede incluir parámetros de consulta idénticos a los utilizados en el endpoint de streaming /2/tweets/search/stream, como expansions, fields y opciones de media. Esto personaliza los datos incluidos en las cargas útiles de los 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 exitosa:
{ 
  "data": { 
    "provisioned": true 
  } 
}
Consejo: Puedes vincular múltiples webhooks al mismo stream para redundancia o para recibir diferentes conjuntos de campos. Cada vínculo puede especificar parámetros únicos. Una vez que tengas tu instancia de Filtered Stream vinculada a tu webhook, comenzarás a recibir Publicaciones que coincidan con tus 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 la 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"
        }
    ]
}

Obtener los webhooks vinculados al Filtered Stream

Obtenga una lista de todos los webhooks actualmente vinculados a su Filtered Stream:
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 tu webhook del Filtered Stream

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