Este endpoint se ha actualizado para incluir metadatos de edición de Publicaciones. Obtén más información sobre estos metadatos en la página de conceptos básicos de “Editar Publicaciones”. Este endpoint se usa a menudo con los endpoints de Mensajes Directos. Hemos lanzado nuevos endpoints v2 de Mensajes Directos. Ten en cuenta que las APIs de Actividad de la Cuenta Enterprise y Premium son compatibles con mensajes uno a uno de v2, pero aún no admiten conversaciones de grupo.
Enterprise
La API de Actividad de la Cuenta te permite suscribirte a actividades en tiempo real relacionadas con una cuenta de usuario mediante webhooks. Esto significa que puedes recibir Publicaciones en tiempo real, Mensajes Directos y otros eventos de cuenta desde una o varias de tus cuentas propias o a las que estés suscrito, a través de una única conexión.
Recibirás todas las actividades relacionadas que se indican a continuación para cada suscripción de usuario en tu registro de webhook:
Ten en cuenta - No entregamos datos de la cronología principal a través de la API de Actividad de la Cuenta. Usa GET statuses/home_timeline para obtener estos datos.
Serie de videos
Resumen de funciones
-
¿Tienes preguntas? ¿Te estás encontrando con errores?
- Lee nuestras preguntas frecuentes o la guía de resolución de errores.
-
Explora nuestro código de ejemplo:
- Enterprise Account Activity API dashboard, una aplicación web en Node que muestra eventos de webhook utilizando el nivel Enterprise de la Account Activity API e incluye la funcionalidad de Replay.
- El SnowBot chatbot, una aplicación web en Ruby creada sobre las APIs empresariales de Account Activity y Direct Message.
Administrar webhooks y usuarios suscritos
- Una App registrada en X - regístrate aquí
- Un Bearer Token - más información
- Un webhook que pase un Challenge-Response Check (CRC) - más información
- Una cuenta enterprise - [solicítala aquí]https://developer.x.com/en/products/x-api/enterprise
Administrar un webhook:
- Agregar un webhook
- Ver un webhook
- Eliminar un webhook
Comencemos registrando una nueva URL de webhook para el contexto de la aplicación indicado.La URL se validará mediante una solicitud CRC antes de guardarla. Una vez que hayas registrado un webhook, asegúrate de documentar el ID del webhook, ya que lo necesitarás más adelante.Copia la siguiente solicitud de cURL en tu línea de comandos tras sustituir los siguientes valores:
-
URL
<URL>p. ej.https://yourdomain.com/webhooks/twitter/ -
Consumer key
<CONSUMER_KEY>p. ej.xvz1evFS4wEEPTGEFPHBog -
Access token
<ACCESS_TOKEN>p. ej.370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb
Gestión de usuarios suscritos:
- Agregar una suscripción
- Ver suscripciones
- Eliminar una suscripción
Comenzaremos suscribiendo a un usuario para que recibas todos los tipos de evento.Copia la siguiente solicitud cURL en tu línea de comandos después de realizar cambios en lo siguiente:
-
Webhook ID
<:WEBHOOK_ID>p. ej.1234567890 -
Nombre de la consumer key
<CONSUMER_KEY>p. ej.xvz1evFS4wEEPTGEFPHBog -
Token de acceso del usuario suscrito
<SUBSCRIBING_USER'S_ACCESS_TOKEN>p. ej.370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb
Artículos relacionados
- Descripción general de la comprobación de desafío-respuesta (CRC)
- [Tipos de datos de actividad de cuenta](/x-api/enterprise-gnip-2.0/fundamentals/account-activity#account-activity-data-object-structure
- Administración de webhooks y suscripciones
Un recorrido en video por la Account Activity API
- Registrar un webhook
- Agregar una suscripción de usuario
- Eliminar una suscripción de usuario
- Recibir actividades de cuenta
- Reproducir actividades de cuenta
-
¿Tienes preguntas? ¿Te estás encontrando con errores?
- Lee nuestras preguntas frecuentes o la guía de solución de errores.
-
Explora nuestro código de ejemplo:
- Panel de la Enterprise Account Activity API, una app web de Node que muestra eventos de webhook usando el nivel enterprise de la Account Activity API e incluye funcionalidad de Replay.
- El chatbot SnowBot, una app web de Ruby creada sobre las Enterprise Account Activity y Direct Message APIs.
Introducción a los webhooks
1. Crea una App de X.
- Crea una App de X con una cuenta de desarrollador aprobada en la Consola de desarrollador. Si estás creando la App en nombre de tu empresa, se recomienda que la crees con una cuenta corporativa de X. Para solicitar una cuenta de desarrollador, haz clic aquí.
- Habilita “Read, Write and Access direct messages” en la pestaña de permissions de la página de tu App.
- En la pestaña “Keys and Access Tokens”, toma nota de la Consumer Key (API Key) y del Consumer Token (API Secret) de tu App.
- En la misma pestaña, genera el Access Token y Access Token Secret de tu App. Necesitarás estos Access Tokens para registrar la URL de tu webhook, que es donde X enviará los eventos de cuenta.
- Si no estás familiarizado con X Sign-in y cómo funcionan los contextos de usuario con X API, revisa Obtaining Access Tokens. A medida que vayas agregando cuentas para recibir eventos, las suscribirás usando los Access Tokens de esa cuenta.
- Toma nota del ID numérico de tu App, tal como aparece en la página “Apps” de la Consola de desarrollador. Cuando solicites acceso a Account Activity API, necesitarás este id de la App.
2. Obtener acceso a Account Activity API
3. Desarrollar la aplicación consumidora de webhooks
-
Crea una aplicación web con una URL para usarla como tu webhook para recibir eventos. Este es el endpoint desplegado en tu servidor que escucha los eventos de webhook entrantes de X.
- La ruta (path) del URI depende completamente de ti. Este ejemplo sería válido: https://mydomain.com_/service/listen_
- Si estás recibiendo webhooks de diversas fuentes, un patrón común es: https://mydomain.com/webhook/twitter
- Ten en cuenta que la URL especificada no puede incluir una especificación de puerto (https://mydomain.com:5000/NoWorkie).
- Como se describe en nuestra guía de Protección de webhooks, un primer paso es escribir código que reciba una solicitud GET de X Challenge Response Check (CRC) y responda con una respuesta JSON correctamente formateada.
- Registra la URL de tu webhook. Realizarás una solicitud POST al endpoint /webhooks.json?url=. Cuando realices esta solicitud, X enviará una solicitud CRC a tu aplicación web. Cuando un webhook se registra correctamente, la respuesta incluirá un webhook id. Este webhook id es necesario más adelante al realizar algunas solicitudes a la Account Activity API.
- X enviará eventos de webhook de cuenta a la URL que registraste. Asegúrate de que tu aplicación web acepte solicitudes POST para los eventos entrantes. Estos eventos estarán codificados en JSON. Consulta aquí para ver ejemplos de payloads JSON de webhooks.
- Una vez que tu aplicación web esté lista, el siguiente paso es agregar cuentas para las que recibir actividades. Al agregar (o eliminar) cuentas, realizarás solicitudes POST que hagan referencia al id de la cuenta. Consulta nuestra guía sobre cómo agregar suscripciones para obtener más información.
4. Validar la configuración
- Para validar que tu app y webhook están configurados correctamente, marca como favorito una Publicación de una de las cuentas de X a las que está suscrita tu app. Deberías recibir un
favorite_eventsmediante una solicitud POST a la URL de tu webhook por cada Favorito que reciban tus suscriptores. - Ten en cuenta que pueden transcurrir hasta 10 segundos antes de que los eventos comiencen a entregarse después de agregar una suscripción.
- Al registrar la URL de tu webhook, tu aplicación web debe autenticarse con su token y secreto de consumidor y el token y secreto de acceso de usuario del propietario de la app.
- Todos los Mensajes Directos entrantes se entregarán mediante webhooks. Todos los Mensajes Directos enviados a través de POST direct_messages/events/new (message_create) también se entregarán mediante webhooks. Esto es para que tu aplicación web pueda conocer los Mensajes Directos enviados a través de un cliente diferente.
- Ten en cuenta que cada evento de webhook incluye un ID de usuario for_user_id que indica para qué suscripción se entregó el evento.
- Si tienes a dos usuarios usando tu aplicación web para Mensajes Directos en la misma conversación, tu webhook recibirá dos eventos duplicados (uno por cada usuario). Tu aplicación web debe tener esto en cuenta.
- Si tienes más de una aplicación web que comparte la misma URL de webhook y el mismo usuario asignado a cada app, el mismo evento se enviará a tu webhook múltiples veces (una por cada aplicación web).
- En algunos casos, tu webhook puede recibir eventos duplicados. Tu aplicación de webhook debe ser tolerante a esto y eliminar duplicados usando el ID del evento.
- No esperes que la respuesta de Quick Reply siga directamente a una solicitud. Un usuario puede ignorar una solicitud de Quick Reply y responder mediante un Mensaje Directo tradicional. El usuario también puede proporcionar una respuesta de Quick Reply a una solicitud a la que no haya respondido anteriormente en el hilo de mensajes.
-
Consulta el código de ejemplo:
- Enterprise Account Activity API dashboard, una aplicación web de Node que muestra eventos de webhook usando el nivel empresarial de la Account Activity API e incluye funcionalidad de Replay.
- El chatbot SnowBot, una aplicación web en Ruby creada sobre las Account Activity y Direct Message APIs. Esta base de código incluye un script para ayudar a configurar los webhooks de la Account Activity API.
Proteger los webhooks
- Las comprobaciones de desafío-respuesta permiten a X confirmar la propiedad de la aplicación web que recibe los eventos de webhook.
- El encabezado de firma en cada solicitud POST te permite confirmar que X es el origen de los webhooks entrantes.
Comprobaciones de desafío-respuesta
crc_token. Cuando se reciba esa solicitud, tu aplicación web deberá generar un response_token cifrado basado en el parámetro crc_token y en el Consumer Secret de tu App (detalles a continuación). El response_token debe estar codificado en JSON (consulta el ejemplo a continuación) y devolverse en un plazo de tres segundos. Cuando la operación se completa correctamente, se devolverá un id de webhook.
Se enviará un CRC cuando registres tu URL de webhook, por lo que implementar tu código de respuesta de CRC es un primer paso fundamental. Una vez que tu webhook esté establecido, X activará un CRC aproximadamente cada 24 horas desde la última vez que recibimos una respuesta correcta. Tu App también puede activar un CRC cuando sea necesario realizando una solicitud PUT con el id de tu webhook. Activar un CRC es útil mientras desarrollas tu aplicación de webhook, después de implementar nuevo código y reiniciar tu servicio.
Debes esperar que el crc_token cambie en cada solicitud CRC entrante y debes utilizarlo como mensaje en el cálculo, donde tu Consumer Secret es la clave.
En caso de que la respuesta no se envíe en un plazo de 3 segundos o deje de ser válida, se dejarán de enviar eventos al webhook registrado.
La solicitud de CRC se producirá:
- Cuando se registre una URL de webhook.
- Aproximadamente cada hora para validar tu URL de webhook.
- Puedes activar manualmente un CRC haciendo una solicitud PUT. A medida que desarrolles tu cliente de webhook, deberías planear activar manualmente el CRC mientras desarrollas tu respuesta al CRC.
Requisitos de la respuesta:
- Un hash HMAC SHA-256 codificado en Base64 creado a partir del
crc_tokeny el Consumer Secret de tu aplicación. response_tokenválido y en formato JSON.- Latencia menor a 3 segundos.
- Código de respuesta HTTP 200.
Bibliotecas HMAC específicas del lenguaje:
Ejemplo de generación de token de respuesta en Python:
Ejemplo de respuesta JSON:
Otros ejemplos:
- AQUÍ hay un ejemplo de método de respuesta CRC escrito en Node.js.
- AQUÍ hay un ejemplo de método de respuesta CRC escrito en Ruby (consulta generate_crc_response y la ruta /GET que recibe eventos CRC).
Validación opcional del encabezado de firma
- Genera un hash usando tu consumer secret y el cuerpo del payload entrante.
- Compara el hash generado con el valor x-twitter-webhooks-signature codificado en base64. Usa un método como compare_digest para reducir la vulnerabilidad a ataques de temporización.
Directrices de seguridad adicionales
Bloques de red agregados de X
- 199.59.148.0/22
- 199.16.156.0/22
- 192.133.77.0/26
- 64.63.15.0/24
- 64.63.31.0/24
- 64.63.47.0/24
- 202.160.128.0/24
- 202.160.129.0/24
- 202.160.130.0/24
Configuraciones de servidor recomendadas
- Obtener una calificación “A” en la prueba de ssllabs.com
- Habilitar TLS 1.2
- Habilitar Forward Secrecy
- Desactivar SSLv2
- Desactivar SSLv3 (debido a POODLE)
- Desactivar TLS 1.0
- Desactivar TLS 1.1
- Desactivar la compresión TLS
- Desactivar Session Tickets a menos que se roten las claves de Session Tickets.
- Establecer la opción “ssl_prefer_server_ciphers” o “SSLHonorCipherOrder” en la configuración SSL como “on”.
- Asegurarse de que la lista de cifrados sea moderna, por ejemplo:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA
Administrar webhooks y suscripciones
Creación y actualización de webhooks
Endpoints de administración de la configuración de webhooks:
¿Por qué no puedo simplemente actualizar la URL del webhook?
Añadir y eliminar suscripciones de usuario
Endpoints para la gestión de suscripciones
Account Activity API: Enterprise
Ten en cuenta lo siguiente: X debe habilitar el acceso a la Account Activity API para tu App de desarrollador antes de que puedas empezar a usar la API. Para ello, asegúrate de compartir el ID de la App que tienes previsto usar para la autenticación con tu gestor de cuenta o con tu equipo de soporte técnico.
*_ La autenticación requiere los tokens de acceso del usuario suscriptor. _
Para aquellos endpoints que requieren autenticación OAuth 1.0a con contexto de usuario, debes proporcionar las siguientes credenciales para autenticar la solicitud:
- Consumer Keys (API Key y Secret)
- Access Tokens (Access Token y Secret)
- POST account_activity/webhooks: Registra una nueva URL de webhook para el contexto de aplicación indicado
- PUT account_activity/webhooks/:webhook_id: Activa una verificación de respuesta al desafío (CRC) para la URL de un webhook dado
- DELETE account_activity/webhooks/:webhook_id: Elimina un webhook
- POST account_activity/webhooks/:webhook_id/subscriptions/all: Suscribe la aplicación a los eventos de la cuenta de un usuario
- GET account_activity/webhooks/:webhook_id/subscriptions/all: Comprueba si una configuración de webhook está suscrita a los eventos de un usuario
- DELETE account_activity/webhooks/:webhook_id/subscriptions/all: Desactiva una suscripción para el contexto de usuario y la aplicación proporcionados [OBSOLETO]
Please note: Asegúrate de que tu App de desarrollador esté habilitada para “Read, Write, and Direct Messages.” Puedes cambiar esta configuración en la sección Projects & Apps de tu cuenta de desarrollador, en “App permissions” para la App de desarrollador seleccionada. Deberás volver a generar las credenciales de tu App después de cambiar la configuración de permisos.
Please note: X debe habilitar el acceso a la Account Activity API para tu App de desarrollador antes de que puedas empezar a usar la API. Para ello, asegúrate de compartir el App ID que piensas usar para fines de autenticación con tu account manager o con el equipo de soporte técnico.
*_ La autenticación requiere los tokens de acceso del usuario suscriptor. _
Para aquellos endpoints que requieren autenticación OAuth 1.0a con contexto de usuario, deberás proporcionar las siguientes credenciales para autenticar la solicitud:
- Consumer Keys (API Key y Secret)
- Access Tokens (Access Token y Secret)
- POST account_activity/webhooks: Registrar una nueva URL de webhook para el contexto de aplicación indicado
- PUT account_activity/webhooks/:webhook_id: Ejecutar una comprobación de respuesta de desafío (CRC) para la URL de un webhook dado
- DELETE account_activity/webhooks/:webhook_id: Eliminar un webhook
- POST account_activity/webhooks/:webhook_id/subscriptions/all: Suscribir la aplicación a los eventos de la cuenta de un usuario
- GET account_activity/webhooks/:webhook_id/subscriptions/all: Comprobar si una configuración de webhook está suscrita a los eventos de un usuario
- DELETE account_activity/webhooks/:webhook_id/subscriptions/all: Desactivar una suscripción para el contexto de usuario y la aplicación proporcionados [OBSOLETO]
Ten en cuenta: Asegúrate de que tu App de desarrollador esté habilitada para “Read, Write, and Direct Messages.” Puedes cambiar esta configuración en la sección Projects & Apps de tu cuenta de desarrollador, en “App permissions” para la App de desarrollador seleccionada. Deberás volver a generar las credenciales de tu App después de cambiar la configuración de permisos.
Reintentos
Enterprise
Uno de los beneficios del nivel Enterprise de la Account Activity API es un mecanismo de reintento para eventos de webhook. Si no se recibe un código de respuesta HTTP 200 de “success”, el servidor de X iniciará un mecanismo de reintento y reenviará el evento de webhook hasta tres veces durante un período de cinco minutos. Este servicio de reintento de eventos de webhook ayuda a proporcionar fiabilidad y recuperación de eventos cuando se producen problemas de red y durante interrupciones y despliegues del servicio en el lado del cliente.
¿Qué son los reintentos?
Cronograma de reintentos
Cronograma de reintentos
Estructura del objeto de datos de Account Activity
Actividades disponibles
Ejemplos de carga útil
Consulta los siguientes ejemplos de carga útil para cada evento de Account Activity descrito en la tabla anterior.
tweet_create_events (Publicaciones, Retweets, Respuestas, Tweets citados)
tweet_create_events (@menciones)
favorite_events
follow_events
unfollow_events
block_events
unblock_events
mute_events
unmute_events
user_event
direct_message_events
direct_message_indicate_typing_events
direct_message_mark_read_events
tweet_delete_events
API de Reproducción de Actividad de Cuenta
Enterprise
La API de Reproducción de Actividad de Cuenta es una herramienta de recuperación de datos que te permite recuperar eventos de hasta cinco días atrás. Debe utilizarse para recuperar datos en escenarios en los que tu servidor de webhook deja de recibir eventos, ya sea debido a desconexiones que duren más que la ventana de reintentos, o en aquellos escenarios de recuperación ante desastres en los que necesitas unos días para restaurar tu sistema a la normalidad.
La API de Reproducción de Actividad de Cuenta se desarrolló para cualquier escenario en el que no puedas ingestar actividades durante un período de tiempo. Entrega actividades al mismo webhook utilizado para la entrega original en tiempo real de las actividades. Este producto es una herramienta de recuperación y no una herramienta de carga histórica (backfill), lo que significa que los eventos solo se reproducirán si se intentó una entrega previa de los mismos. La API de Reproducción de Actividad de Cuenta no puede entregar eventos correspondientes a un período anterior al momento de creación de una suscripción.
Uso de Account Activity Replay API
Limitaciones
Disponibilidad de datos y tipos
Introducción a la migración
- User Streams
- Site Streams
- GET direct_messages
- GET direct_messages/sent
- GET direct_messages/show
- POST direct_messages/new
- POST direct_messages/destroy
- Account Activity API enterprise y premium
- GET direct_messages/events/list
- GET direct_messages/events/show
- POST direct_messages/events/new
- POST direct_messages/events/destroy
- Guía de migración de Account Activity API para quienes pasan de User Streams y Site Streams a nuestro nuevo servicio basado en webhooks
- Guía de migración de Mensajes Directos para quienes migran entre endpoints REST de Mensajes Directos
- El Account Activity Dashboard es una aplicación web de Node.js de ejemplo con scripts auxiliares para comenzar a usar Account Activity API.
- SnowBot es un chatbot de ejemplo que usa Account Activity API y endpoints REST de Mensajes Directos. Está escrito en Ruby, utiliza el framework web Sinatra y se despliega en Heroku.
Guía de migración: migrar de User Streams/Site Streams a Account Activity API
Resumen de los cambios
APIs en desuso
APIs de sustitución
Diferencias y consideraciones de migración
Nuevas funcionalidades
Gestión de suscripciones de usuario
Cómo migrar
Sigue los pasos a continuación para migrar fácilmente de la Site Streams API a la Account Activity API
- Número de webhooks necesarios
- Suscripciones/usuarios autorizados actuales/proyectados gestionados en tu aplicación
- Número actual de aplicaciones cliente de X
- El nivel de soporte que prefieres por parte de X (soporte mediante foro o soporte enterprise gestionado 1:1)
- El precio de cada paquete
- Habilita “Read, Write and Access direct messages” en la pestaña de permissions de la página de tu app de X. *Ten en cuenta que cambiar estas opciones no es retroactivo; cualquier usuario autorizado conservará la configuración de autorización del momento en que fue autorizado. Si un usuario aún no te ha otorgado acceso de lectura, escritura y mensajes directos, deberás hacer que ese usuario vuelva a autorizar tu aplicación.
- Si no estás familiarizado con X Sign-in y cómo funcionan los contextos de usuario con la X API, revisa Obtaining Access Tokens.
- Genera tokens de acceso para el propietario de la app de X en la parte inferior de la pestaña “Keys and Tokens”. En esta misma pestaña, toma nota de tu Consumer Key, Consumer Secret, Access Token y Access Token Secret. Los necesitarás para usar la API.
- Genera un Bearer Token usando tu Consumer Key y Consumer Secret para métodos de la API en modo application-only.
- Crea una aplicación web con un endpoint para usar como tu webhook y recibir eventos (por ejemplo, https://your_domain.com/webhook/twitter o https://webhooks.your_domain.com).
-
Usa tu Consumer Key, Consumer Secret, Access Token y Access Token Secret al crear tu webhook. Ten en cuenta que tu endpoint debe devolver una respuesta JSON con un
response_tokenque sea un hash HMAC SHA-256 codificado en base64 creado a partir delcrc_tokeny el Consumer Secret de tu app. - Revisa la documentación de Securing Webhooks, prestando especial atención a los requisitos de Challenge Response Check (CRC).
- Asegúrate de que tu webhook admita solicitudes POST para eventos entrantes y solicitudes GET para el CRC.
- Asegúrate de que tu webhook tenga baja latencia (<3 segundos para responder a solicitudes POST)
- Las Webhook APIs protegerán tus webhooks de dos maneras:
- Para verificar que eres tanto el propietario de la aplicación web como de la URL del webhook, X realizará un Challenge Response Check (CRC), que no debe confundirse con una comprobación de redundancia cíclica.
- Se enviará una solicitud GET con un parámetro llamado
crc_tokena la URL de tu webhook. Tu endpoint debe devolver una respuesta JSON con unresponse_tokenque sea un hash HMAC SHA-256 codificado en base64 creado a partir delcrc_tokeny el Consumer Secret de tu app. - Se debe esperar que el
crc_tokencambie en cada solicitud de CRC entrante. Elcrc_tokendebe usarse como mensaje en el cálculo, donde tu Consumer Secret es la clave. - En caso de que la respuesta sea inválida, se dejarán de enviar eventos al webhook registrado.
- Genera una lista de tus suscripciones de usuario actuales en User Streams
- Configura tus nuevas suscripciones de Account Activity API mediante la solicitud: POST account_activity/all/:env_name/subscriptions
- Confirma tus suscripciones de Account Activity API mediante la solicitud: _GET account_activity/all/:env_name/subscriptions/list _
- Genera una lista de tus suscripciones actuales en Site Streams mediante la solicitud: GET /1.1/site/c/:stream_id/info.json
- Configura tus nuevas suscripciones de Account Activity API mediante la solicitud: POST account_activity/all/:env_name/subscriptions
- Confirma tus suscripciones de Account Activity API mediante la solicitud: _GET account_activity/all/:env_name/subscriptions/list _
- Registra la URL de tu webhook con tu App usando POST webhooks y recibe un webhook_id.
- Usa el webhook_id devuelto para agregar suscripciones de usuario con POST webhooks/:webhook_id/subscriptions/all.
El panel de Account Activity (aplicación de ejemplo de Account Activity API)
- Descarga la aplicación de ejemplo Account Activity Dashboard aquí (usa Node.js)
- Sigue las instrucciones del README para instalar e iniciar la aplicación
- Una vez que la aplicación se haya iniciado, puedes usar la interfaz de usuario para configurar fácilmente tu webhook y crear una nueva suscripción
Actividades disponibles
Tipos de mensajes de streaming en desuso
Tipos de eventos obsoletos
Guía de migración de Mensajes Directos
- Resumen de cambios
- Nuevas funciones
- Envío de Mensajes Directos
- Recepción de Mensajes Directos
- Eliminación de Mensajes Directos
Resumen de los cambios
Nuevas funciones
Los nuevos endpoints de la API de Mensajes Directos incorporan varias funcionalidades nuevas y ofrecen un acceso mejorado a Mensajes Directos anteriores. Las nuevas funciones incluyen:- Compatibilidad con archivos multimedia adjuntos (imagen, GIF y video).
- Posibilidad de solicitar a los usuarios respuestas estructuradas con una lista de opciones predefinida.
- Hasta 30 días de acceso a Mensajes Directos anteriores.
Diferencias y consideraciones de migración
Nuevo objeto de Mensaje Directo
Resumen
- Estructura de objeto de Mensaje Directo completamente nueva.
- Objeto de usuario simplificado.
- Nueva información disponible (respuestas a respuestas rápidas, archivos adjuntos, etc.).
Envío de Mensajes Directos
Resumen
- El mensaje se define en el cuerpo de la solicitud POST en formato JSON
- El encabezado Content-Type debe establecerse en application/json
- El cuerpo JSON no se incluye en la generación de la firma de OAuth
Recuperar Mensajes Directos
Resumen
- Los mensajes enviados y recibidos ahora se devuelven en el mismo endpoint.
- Se devuelven mensajes de hasta 30 días de antigüedad.
- Paginación basada en cursores.
- Acceso en tiempo real a Mensajes Directos mediante webhook.
Eliminación de Mensajes Directos
Resumen
- Para eliminar un mensaje directo se requiere el id.
- El nuevo endpoint requiere una solicitud DELETE.
- La forma en que los mensajes directos eliminados se reflejan en los clientes oficiales de X permanece sin cambios.
Preguntas frecuentes
General
- Velocidad: entregamos los datos a la velocidad de X.
- Simplicidad: entregamos todos los eventos de una cuenta a través de una única conexión de webhook. Las actividades entregadas en la API incluyen Publicaciones, @menciones, respuestas, Retweets, Quote Tweets, Retweets de Quote Tweets, favoritos, mensajes directos enviados, mensajes directos recibidos, follows, blocks y mutes.
- Escalabilidad: recibes todas las actividades de una cuenta que administras sin estar restringido por ningún límite de tasa ni topes de eventos.
- Si recién estás comenzando, te recomendamos que visites nuestra guía Getting started with webhooks
-
Sigue nuestros scripts proporcionados por X Dev:
- Account Activity API dashboard, una aplicación web Node que muestra eventos de webhook.
- El chatbot SnowBot, una aplicación web Ruby creada sobre las Account Activity y Direct Message APIs. Este código base incluye un script para ayudar a configurar los webhooks de Account Activity API.
- El servidor responde a un CRC con un token incorrecto. En este caso, nuestro sistema no reintentará enviarte la actividad.
- La URL del webhook tiene configurado un certificado incorrecto. En este caso, nuestro sistema no reintentará enviarte la actividad.
- Tu servidor devuelve un código de respuesta que no es 2XX, 4XXX ni 5XXX.
- Especificas el uso de gzip sin enviarlo realmente.
- No especificas el uso de gzip, pero en realidad lo envías en la respuesta.
/all/ del siguiente endpoint con otros objetos de datos de Account Activity para limitar las actividades que entrega la API? **POST https://api.x.com/1.1/account_activity/all/:env_name/subscriptions.json
No, esto no es posible. En la situación actual, solo tenemos disponible el producto /all/.
**¿Hay alguna forma de usar la Account Activity API sin solicitar permisos de Mensajes Directos a los usuarios? **
En este momento, se requieren permisos de Mensajes Directos porque no existe ninguna forma de “filtrar” las actividades de Mensajes Directos para esta API.
¿Existe una versión sandbox de la Account Activity API?
Sí, ofrecemos una opción de sandbox para pruebas. Nuestra opción de sandbox está limitada a un único webhook con un máximo de 15 suscripciones. Puedes leer más sobre la opción de sandbox en nuestra documentación.
**¿Es posible usar la Account Activity API para obtener Retweets de Publicaciones que mencionan a usuarios suscritos? **
Lamentablemente, esto no forma parte de las actividades entregadas con esta API. Para esto, sugerimos usar la Streaming API.
¿Cuáles son los posibles tipos de actividad que están representados por un tweet_create_event?
Se enviará una carga útil de tweet_create_event:
Si el usuario suscrito realiza cualquiera de las siguientes acciones:
- Crea una Publicación
- Hace Retweet
- Responde a una Publicación
- @menciona* al usuario suscrito
- Cita un Tweet creado por el usuario suscrito
user_has_blocked en el nivel superior de la respuesta JSON, establecido en “true” o “false”. Este campo solo se expondrá en menciones en Publicaciones.
Enterprise
¿Cómo puedo añadir mi App a una allowlist o comprobar si mi App ya está en la allowlist?
Para gestionar las X apps que has añadido a una allowlist para el acceso mediante las Enterprise APIs, ponte en contacto con tu account manager y facilítale tu app ID. Puedes encontrar tu app ID yendo a la página “Apps” en la Consola de desarrollador.
Si tengo acceso a tres webhooks, ¿puedo usar tres webhooks para cada una de las apps que he registrado para uso empresarial?
El límite de webhooks se establece a nivel de cuenta, no a nivel de app. Si tienes acceso a tres webhooks y dos apps registradas para uso empresarial, puedes usar dos webhooks en una app y el tercero en la otra app, pero no tres en cada app.
¿Puedo especificar qué tipos de eventos se volverán a entregar usando la Account Activity Replay API?
Los tipos de eventos a reproducir no se pueden especificar. Se volverán a reproducir todos los eventos entregados durante el intervalo de fecha y hora especificado.
¿Habrá reintentos si mi aplicación no logra procesar un evento de la Account Activity Replay API?
No, no habrá reintentos. Si una aplicación no logra procesar un evento enviado por la Account Activity Replay API, se puede enviar otro Replay job para el mismo período de tiempo para intentar la reentrega de cualquier Replay event que se haya perdido.
¿Qué debo hacer cuando recibo un evento de finalización con éxito parcial (partial success)?
Sugerimos que tomes nota de las marcas de tiempo (timestamps) de los eventos que se recibieron y solicites otro Replay job para los eventos que faltaron.
¿Cuántos Replay jobs de Account Activity Replay API puedo tener en ejecución al mismo tiempo?
Solo puede estar en ejecución un Replay job de Account Activity Replay API por webhook a la vez.
¿Cómo puedo diferenciar los eventos de Account Activity Replay API de los eventos de producción en tiempo real a medida que se entregan a mi webhook?
Dado que la Account Activity Replay API siempre entregará eventos del pasado, los eventos se pueden diferenciar de los eventos de producción en tiempo real en función de la marca de tiempo del evento.
¿Con qué rapidez puedo empezar a usar la Account Activity Replay API para volver a entregar una actividad que mi aplicación descartó o se perdió?
Una actividad pasa a estar disponible para su reentrega aproximadamente 10 minutos después de que se creó.
Guía para solucionar errores
Code 32
- Enterprise - Asegúrate de que las consumer keys y los access tokens que estás utilizando pertenezcan a una App de X que haya sido registrada para el uso de productos Enterprise. Si no tienes tus consumer keys y access tokens, o necesitas agregar tu App de X a la allowlist, ponte en contacto con tu account manager.
-
Si te autenticas con contexto de usuario, asegúrate de haber autorizado correctamente tu solicitud con los valores correctos para
oauth nonce,oauth_signatureyoauth_timestamp. -
Asegúrate de que tus access tokens tengan el nivel de permisos adecuado.
- En la pestaña ‘Keys and tokens’ del app dashboard, asegúrate de que tus access tokens tengan el nivel de permisos ‘Read, write, and direct messages’ permission level.
- Si el nivel de permisos de los tokens está configurado en algo menor que esto, ve a la pestaña ‘Permissions’, ajusta el permiso de acceso a ‘Read, write, and direct messages’ y luego vuelve a generar tus access tokens y secret desde la pestaña ‘Keys and tokens’.
-
Asegúrate de que tu URL esté formada correctamente.
- Ten en cuenta que
:env_namedistingue entre mayúsculas y minúsculas.
- Ten en cuenta que
Código 200 - Prohibido
- Premium - Asegúrate de que tienes una cuenta de desarrollador aprobada antes de intentar realizar una solicitud a la API. También debes usar el :env_name correcto en la solicitud, que puedes configurar en la página de entornos de desarrollo.
- Enterprise - Asegúrate de que tu gestor de cuenta te haya habilitado el acceso a la Account Activity API.
- Asegúrate de haber configurado correctamente tu URI. Este error puede producirse si has introducido una URI incorrecta en tu solicitud.
Código 214 - La URL del webhook no cumple con los requisitos.
- Asegúrate de usar HTTPS.
- La URL de tu webhook podría estar mal formada.
- Obtén más información sobre cómo configurar la URL de tu webhook en la sección Develop webhook consumer app de la página Getting started with webhooks.
Código 214 - Alta latencia en la solicitud GET de CRC. Tu webhook debe responder en menos de 3 segundos.
- Esto significa que tu servidor es lento. Asegúrate de responder al CRC en un plazo máximo de 3 segundos.
Código 214 - Código de respuesta distinto de 200 durante la solicitud GET de CRC (es decir, 404, 500, etc.).
- Tu servidor está caído. Asegúrate de que tu servidor esté funcionando correctamente.
Código 214 - Ya se han creado demasiados recursos.
- Enterprise - Ya has usado todos tus webhooks. Utiliza el endpoint GET webhooks con cada una de tus Apps registradas para identificar en qué Apps están configurados tus webhooks.
Código 261 - La aplicación no puede realizar acciones de escritura.
- La App que estás utilizando con la API no tiene configurado el nivel de permiso adecuado para su access token y access token secret. Dirígete a la pestaña «Keys and tokens» en el panel de X apps y comprueba los niveles de permiso asignados a tu access token y access token secret. Si está configurado en cualquier valor distinto de «Read, write and Direct Messages», tendrás que ajustar la configuración en la pestaña «Permission» y regenerar tu access token y access token secret para aplicar la nueva configuración.
- Como alternativa, es posible que estés intentando registrar un webhook utilizando autenticación solo de App, lo cual no es compatible. Autentícate con contexto de usuario tal como se indica en las secciones de Referencia de la API para registrar un webhook para la Enterprise Account Activity API.
Índice de referencia de la Account Activity API
API de actividad de cuentas empresariales
https://api.x.com/1.1/account_activity/webhooks.json
$ curl —request POST
—url ‘https://api.x.com/1.1/account_activity/webhooks.json?url=https%3A%2F%2Fyour_domain.com%2Fwebhooks%2Ftwitter%2F0'
—header ‘authorization: OAuth oauth_consumer_key=“CONSUMER_KEY”, oauth_nonce=“GENERATED”, oauth_signature=“GENERATED”, oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“GENERATED”, oauth_token=“ACCESS_TOKEN”, oauth_version=“1.0“‘
Ejemplo de respuesta: éxito
HTTP 403
URL del recurso
https://api.x.com/1.1/account_activity/webhooks.json
Ejemplo de solicitud
Mensajes de error
Activa la comprobación de desafío-respuesta (CRC) para la URL del webhook especificado. Si la comprobación se realiza correctamente, devuelve un 204 y vuelve a habilitar el webhook estableciendo su estado en
valid.
URL del recurso
https://api.x.com/1.1/account_activity/webhooks/:webhook_id.json
Parámetros
Ejemplo de solicitud
Mensajes de error
Suscribe la aplicación proporcionada a todos los eventos del contexto de usuario proporcionado para todos los tipos de mensajes. Después de la activación, todos los eventos para el usuario que realiza la solicitud se enviarán al webhook de la aplicación mediante una solicitud POST.
Actualmente, las suscripciones están limitadas en función de la configuración de tu cuenta. Si necesitas añadir más suscripciones, ponte en contacto con tu administrador de cuenta.
URL del recurso
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Ejemplo de solicitud
Mensajes de error
Devuelve el número de suscripciones que están activas actualmente en tu cuenta. Ten en cuenta que el endpoint /count requiere OAuth de solo aplicación, por lo que debes realizar las solicitudes usando un Bearer Token en lugar de usar el contexto de usuario.
URL del recurso
https://api.x.com/1.1/account_activity/subscriptions/count.json
Ejemplo de solicitud
Ejemplo de respuesta - éxito
HTTP 200Mensajes de error
HTTP 401
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Ejemplo de solicitud
$ curl —request GET —url https://api.x.com/1.1/account_activity/webhooks/:WEBHOOK_ID/subscriptions/all.json —header ‘authorization: OAuth oauth_consumer_key=“WHITELISTED_CONSUMER_KEY”, oauth_nonce=“GENERATED”, oauth_signature=“GENERATED”, oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“GENERATED”, oauth_token=“SUBSCRIBING_USER’S_ACCESS_TOKEN”, oauth_version=“1.0“‘Ejemplo de respuesta - Éxito
HTTP 204 SIN CONTENIDOhttps://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all/list.json
Ejemplo de solicitud
$ curl —request GET —url https://api.x.com/1.1/account_activity/webhooks/:WEBHOOK_ID/subscriptions/all/list.json —header ‘authorization: Bearer TOKEN’Ejemplo de respuesta - correcta
HTTP 200Mensajes de error
HTTP 401
https://api.x.com/1.1/account_activity/webhooks/:webhook_id.json
Ejemplo de solicitud
Respuesta
HTTP 204 OKhttps://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/all.json
Ejemplo de solicitud
https://api.x.com/1.1/account_activity/webhooks/:webhook_id/subscriptions/:user_id/all.json