Saltar al contenido principal

Hilos de conversación con la X API

Si observas cómo evolucionan las conversaciones en X, un Post puede generar varios hilos de conversación, cada uno de los cuales puede crecer en extensión y complejidad a medida que más personas participan. Identificar las relaciones entre Posts y entender los hilos de conversación es una funcionalidad del payload y de las capacidades de búsqueda de la X API v2. Cuando se publican Posts en respuesta a un Post (conocido como respuesta) o en respuesta a una respuesta, cada respuesta incluye ahora un conversation_id definido, que coincide con el Post ID del Post original que inició la conversación. Las respuestas a un Post determinado, así como las respuestas a esas respuestas, se incluyen todas en la conversación que se origina en el Post original. Independientemente de cuántos hilos de respuestas se generen, todos compartirán un conversation_id común con el Post original que dio inicio a la conversación. Con la X API v2, puedes recuperar y reconstruir un hilo de conversación completo, lo que te permite comprender qué se está diciendo y cómo evolucionan las conversaciones e ideas.

Ejemplo de hilo de conversación

A continuación se muestra un ejemplo de hilo de conversación con cinco personas diferentes, incluida una respuesta a otra respuesta.
{
  "data": [
    {
      "conversation_id": "1279944223114900000",
      "in_reply_to_user_id": "1102323333",
      "author_id": "63044444",
      "created_at": "2020-07-06T15:58:10.000Z",
      "id": "1280169177479744444",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1280155225706433333"
        }
      ],
      "text": "@ThirdPerson333 @OriginalPerson000 ¡Respuesta a la tercera respuesta!"
    },
    {
      "conversation_id": "1279944223114900000",
      "in_reply_to_user_id": "3001960000",
      "author_id": "1102323333",
      "created_at": "2020-07-06T15:02:44.000Z",
      "id": "1280155225706433333",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1279944223114900000"
        }
      ],
      "text": "@OriginalPerson000 Tercera respuesta"
    },
    {
      "conversation_id": "1279944223114900000",
      "in_reply_to_user_id": "3001960000",
      "author_id": "199562222",
      "created_at": "2020-07-06T15:02:36.000Z",
      "id": "1280155190306340864",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1279944223114900000"
        }
      ],
      "text": "@OriginalPerson000 Segunda respuesta"
    }
  ],
  "includes": {
    "users": [
      {
        "name": "Persona original",
        "id": "3001960000",
        "username": "OriginalPerson000"
      },
      {
        "name": "Primera persona",
        "id": "179201111",
        "username": "FirstPerson111"
      }
    ]
  },
  "meta": {
    "newest_id": "1280169177479744444",
    "oldest_id": "1279945722494811111",
    "result_count": 4
  }
}
Recuperar conversation_id como parámetro de tweet.fields Para solicitar el conversation_id de todos los Posts devueltos en un endpoint de v2, agrega el parámetro tweet.fields=conversation_id a la solicitud. El campo conversation_id siempre coincide con el ID del Post original en el hilo de respuestas de la conversación. Todos los Posts dentro del mismo hilo de respuestas, incluidos los hilos de respuesta creados a partir de hilos anteriores, mostrarán el mismo conversation_id.

Solicitud con el parámetro conversation_id

curl --request GET \
  --url 'https://api.x.com/2/tweets?ids=1225917697675886593&tweet.fields=author_id,conversation_id,created_at,in_reply_to_user_id,referenced_tweets&expansions=author_id,in_reply_to_user_id,referenced_tweets.id&user.fields=name,username' \
  --header 'Authorization: Bearer $ACCESS_TOKEN'

Respuesta

{
  "data": [
    {
      "id": "1225917697675886593",
      "text": "@TwitterEng *ahem* https://t.co/aroJHt2zQ1",
      "created_at": "2020-02-07T23:02:10.000Z",
      "author_id": "2244994945",
      "in_reply_to_user_id": "6844292",
      "conversation_id": "1225912275971657728",
      "referenced_tweets": [
        {
          "type": "quoted",
          "id": "1200517737669378053"
        },
        {
          "type": "replied_to",
          "id": "1225912275971657728"
        }
      ]
    }
  ],
  "includes": {
    "users": [
      {
        "username": "TwitterDev",
        "name": "Twitter Dev",
        "id": "2244994945"
      },
      {
        "username": "TwitterEng",
        "name": "Twitter Engineering",
        "id": "6844292"
      }
    ],
    "tweets": [
      {
        "id": "1200517737669378053",
        "text": "| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|\n             no despliegues            \n             a prod los            \n               viernes                  \n|___________| \n(\\__/)",
        "created_at": "2019-11-29T20:51:47.000Z",
        "author_id": "2244994945",
        "conversation_id": "1200517737669378053"
      }
    ]
  }
}

Uso de conversation_id como operador de filtro

El conversation_id puede usarse como parámetro de búsqueda en la búsqueda reciente o como operador dentro de una regla para filtered stream. Esto devolverá todo el hilo de conversación de Posts, ya sea en tiempo real a través de filtered stream o en orden cronológico inverso desde search Tweets. También puedes obtener un conteo de los Posts en una conversación usando este operador con Posts counts.

Solicitud para consultar mediante conversation_id

curl --request GET \
  --url 'https://api.x.com/2/tweets/search/recent?query=conversation_id:1279940000004973111&tweet.fields=in_reply_to_user_id,author_id,created_at,conversation_id' \
  --header 'Authorization: Bearer $ACCESS_TOKEN'

Respuesta

Nota: Los resultados de las búsquedas de Posts aparecen en orden cronológico inverso.
{
  "data": [
    {
      "id": "1280169000000704333",
      "text": "@attributeisland @iterationjoe ¡Qué criaturas tan hermosas! Feliz #seaturtleweek",
      "conversation_id": "1279940000004973111",
      "public_metrics": {
        "retweet_count": 0,
        "reply_count": 0,
        "like_count": 7,
        "quote_count": 0
      }
    }
  ],
  "meta": {
    "newest_id": "1280169000000704333",
    "oldest_id": "1279940000004973111",
    "result_count": 5
  }
}