Saltar al contenido principal

Hilos de conversación con la X API

Si observas cómo evolucionan las conversaciones en X, un Post puede desencadenar varios hilos de conversación, cada uno de los cuales puede aumentar en longitud y complejidad a medida que más personas intervienen. Identificar las relaciones entre los Posts y comprender los hilos de conversación es una función 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, ahora cada respuesta incluye un conversation_id definido, que coincide con el ID de Post del Post original que inició la conversación. Las respuestas a un Post determinado, así como las respuestas a esas respuestas, están todas incluidas en la conversación derivada del 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 entender 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 una 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 v2, agrega el campo tweet.fields=conversation_id a los parámetros de la solicitud. El campo conversation_id siempre es el ID de Post 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 respuestas 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 hagas deploy        \n             a producción           \n               los viernes          \n|___________| \n(\\__/)",
        "created_at": "2019-11-29T20:51:47.000Z",
        "author_id": "2244994945",
        "conversation_id": "1200517737669378053"
      }
    ]
  }
}

Usar 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 el stream filtrado. Esto devolverá todo el hilo de conversación de Posts, ya sea en tiempo real a través del stream filtrado o en orden cronológico inverso desde search Tweets. También puedes obtener un recuento de los Posts en una conversación usando este operador con Posts counts.

Solicitud para consultar por 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 búsqueda de Posts se presentan 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
  }
}
I