API de Webhooks v2
Descripción general
Resumen de funcionalidades
| Nivel | Precio | Número de webhooks |
|---|---|---|
| Pro de autoservicio | 5.000 $/mes | 1 |
| Empresarial | Contactar con ventas | 5+ |
Productos que admiten webhooks
Administrar webhooks
1. Desarrolle una App consumidora de webhooks
- Cree una aplicación web con una URL HTTPS de acceso público que actuará como el endpoint del webhook para recibir eventos.
- La ruta del URI queda completamente a su criterio. Este ejemplo sería válido: https://mydomain.com/service/listen
- Si va a recibir webhooks de diversas fuentes, un patrón común es: https://mydomain.com/webhook/twitter
- Tenga en cuenta que la URL especificada no puede incluir una especificación de puerto (https://mydomain.com:5000/NoWorkie).
- Un primer paso es escribir código que reciba una solicitud GET de X Challenge Response Check (CRC) y responda con un JSON correctamente formateado.
- Registre la URL de su webhook. Hará una solicitud POST al endpoint /2/webhooks con la URL en el cuerpo JSON. Cuando realice esta solicitud, X enviará una solicitud CRC a su aplicación web.
- Cuando un webhook se registre correctamente, la respuesta incluirá un id de webhook. Este id de webhook se necesitará más adelante al realizar solicitudes a productos que admiten webhooks.
- X enviará solicitudes POST con eventos a la URL que registró. Estos eventos estarán codificados en JSON. Consulte aquí ejemplos de cargas útiles JSON de webhooks.
Opcional: Usa xurl para pruebas
xurl desde GitHub, configura tu autorización y luego ejecuta:
- Al registrar tu URL de webhook, tu app web debe usar el consumer secret de tu App para cifrar la verificación CRC.
- Todos los Mensajes Directos entrantes se entregarán mediante webhooks. Todos los Mensajes Directos enviados con POST /2/dm_conversations/with/:participant_id/messages también se entregarán mediante webhooks. Esto permite que tu app web detecte Mensajes Directos enviados desde otro cliente.
- Si tienes más de una app web que comparte la misma URL de webhook y el mismo usuario asignado a cada App, el mismo evento se enviará a tu webhook varias veces (una por cada app web).
- En algunos casos, tu webhook puede recibir eventos duplicados. Tu app de webhook debe tolerarlo y eliminar duplicados por id de evento.
-
Consulta el código de ejemplo:
- Account Activity API Setup, una app web de Node que muestra eventos de webhook utilizando el plan Empresarial de la Account Activity API.
2. Protección de webhooks
- Las comprobaciones de desafío-respuesta permiten a X confirmar la propiedad de la aplicación web que recibe eventos de webhook.
- El encabezado de firma en cada solicitud POST le permite confirmar que X es el origen de los webhooks entrantes.
3. La API de Webhooks
https de acceso público debe incluirse en el cuerpo JSON.Comencemos registrando una nueva URL de webhook para el contexto de la App indicada. Autenticación: OAuth2 App Only Bearer Token
- Bearer token
<BEARER_TOKEN>p. ej.,AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
- URL
<URL>p. ej.,https://yourdomain.com/webhooks/twitter/
| Motivo | Descripción |
|---|---|
CrcValidationFailed | La URL de callback no respondió correctamente a la verificación CRC (p. ej., se agotó el tiempo de espera, respuesta incorrecta). |
UrlValidationFailed | La URL de callback proporcionada no cumple los requisitos (p. ej., no es https, formato no válido). |
DuplicateUrlFailed | Tu aplicación ya tiene registrado un webhook para la URL de callback proporcionada. |
WebhookLimitExceeded | Tu aplicación alcanzó el número máximo de configuraciones de webhook permitidas. |
-
Token Bearer
<BEARER_TOKEN>p. ej.,AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn... -
URL
<URL>p. ej.,https://yourdomain.com/webhooks/twitter/
webhook_id específico. El id puede obtenerse de la respuesta de creación POST /2/webhooks o de la respuesta de listado GET /2/webhooks.
Autenticación:
OAuth2 App Only Bearer Token
- Bearer token
<BEARER_TOKEN>p. ej.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
| Parámetro | Descripción |
|---|---|
webhook_id | El id del webhook que se va a eliminar. |
| Motivo | Descripción |
|---|---|
WebhookIdInvalid | El webhook_id proporcionado no se encontró o no está asociado con tu App. |
valid.
Autenticación:
OAuth2 App Only Bearer Token
- Token de portador (Bearer token)
<BEARER_TOKEN>p. ej.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
| Parámetro | Descripción |
|---|---|
webhook_id | El id del webhook que se va a validar. |
valid en la respuesta refleja el estado después del intento de verificación. Si la verificación CRC se realiza correctamente, el estado del webhook se actualizará a válido. Puedes verificar el estado actual con GET /2/webhooks.
| Motivo | Descripción |
|---|---|
WebhookIdInvalid | No se encontró el webhook_id proporcionado o no está asociado con tu App. |
CrcValidationFailed | La URL de callback no respondió correctamente a la solicitud de comprobación de CRC. |
4. La comprobación CRC
- En el registro inicial del webhook (
POST /2/webhooks) - Cada hora, por X, para validación
- Manualmente mediante
PUT /2/webhooks/:id
- Usa crc_token como mensaje
- Usa el consumer secret de la App como clave
- Crea un hash HMAC SHA-256
- Codifica el resultado en Base64
Apps de ejemplo
- Servidor de webhook simple
- Un script de Python único que muestra cómo responder a la verificación CRC y aceptar eventos POST.
- Panel de muestra de Account Activity API
- Una app web creada con bun.sh que permite gestionar webhooks, suscripciones y recibir eventos en tiempo real directamente en la App.