Pular para o conteúdo principal

Tópicos de conversa usando a X API

Se você observar como as conversas evoluem no X, um Post pode iniciar vários tópicos de conversa, cada um dos quais pode crescer em extensão e complexidade à medida que mais pessoas entram na discussão. Identificar relações entre Posts e entender tópicos de conversa é um recurso do payload e das funcionalidades de busca da X API v2. Quando Posts são publicados em resposta a um Post (conhecida como resposta), ou em resposta a uma resposta, agora há um conversation_id definido em cada resposta, que corresponde ao ID do Post do Post original que iniciou a conversa. Respostas a um determinado Post, bem como respostas a essas respostas, estão todas incluídas na conversa originada a partir do único Post original. Independentemente de quantos encadeamentos de respostas resultem, todos compartilharão um conversation_id comum ao Post original que iniciou a conversa. Usando a X API v2, você pode recuperar e reconstruir um tópico de conversa inteiro, permitindo entender o que está sendo dito e como as conversas e ideias evoluem.

Exemplo de tópico de conversa

Abaixo está um exemplo de tópico de conversa envolvendo cinco pessoas diferentes, incluindo uma resposta a outra resposta.
{
  "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 Responda à terceira resposta!"
    },
    {
      "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 Terceira resposta"
    },
    {
      "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 resposta"
    }
  ],
  "includes": {
    "users": [
      {
        "name": "Pessoa original"
        "id": "3001960000",
        "username": "OriginalPerson000"
      },
      {
        "name": "Primeira pessoa"
        "id": "179201111",
        "username": "FirstPerson111"
      }
    ]
  },
  "meta": {
    "newest_id": "1280169177479744444",
    "oldest_id": "1279945722494811111",
    "result_count": 4
  }
}
Recuperando conversation_id como um parâmetro de tweet.fields Para solicitar o conversation_id de todos os Posts retornados em um endpoint v2, adicione o parâmetro tweet.fields=conversation_id à solicitação. O campo conversation_id é sempre o ID do Post do Post original no encadeamento de respostas da conversa. Todos os Posts dentro do mesmo encadeamento de respostas, incluindo encadeamentos de respostas criados a partir de encadeamentos anteriores, exibirão o mesmo conversation_id.

Solicitação com o 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'

Resposta

{
  "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             não faça deploy          \n             em produção              \n               às sextas-feiras       \n|___________| \n(\\__/)"
        "created_at": "2019-11-29T20:51:47.000Z",
        "author_id": "2244994945",
        "conversation_id": "1200517737669378053"
      }
    ]
  }
}

Usando conversation_id como operador de filtro

O conversation_id pode ser usado como parâmetro query em pesquisas recentes ou como operador em uma regra para o stream filtrado. Isso retornará todo o encadeamento da conversa de Posts, seja em tempo real por meio do stream filtrado ou em ordem cronológica inversa a partir da pesquisa de Tweets. Você também pode obter a contagem de Posts em uma conversa usando esse operador com contagem de Posts.

Solicitação 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'

Resposta

Observação: os resultados para Posts de pesquisa são exibidos em ordem cronológica inversa.
{
  "data": [
    {
      "id": "1280169000000704333",
      "text": "@attributeisland @iterationjoe Que criaturas lindas! 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