Vai al contenuto principale

Thread di conversazione con la X API

Osservando come si evolvono le conversazioni su X, un singolo Post può generare diversi thread di conversazione, ciascuno dei quali può crescere in lunghezza e complessità man mano che intervengono più persone. L’identificazione delle relazioni tra i Post e la comprensione dei thread di conversazione sono funzionalità del payload e delle capacità di ricerca della X API v2. Quando i Post vengono pubblicati in risposta a un Post (nota come risposta), o in risposta a una risposta, ogni risposta presenta un conversation_id definito, che corrisponde all’ID del Post del Post originale che ha avviato la conversazione. Le risposte a un determinato Post, così come le risposte a quelle risposte, sono tutte incluse nella conversazione derivante dal singolo Post originale. Indipendentemente da quanti thread di risposte si generino, condivideranno tutti lo stesso conversation_id del Post originale che ha avviato la conversazione. Utilizzando la X API v2, è possibile recuperare e ricostruire un intero thread di conversazione, consentendoti di comprendere cosa viene detto e come si evolvono conversazioni e idee.

Esempio di thread di conversazione

Di seguito è riportato un esempio di thread di conversazione che coinvolge cinque persone diverse, incluso un commento in risposta a un altro commento.
{
  "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 Rispondi alla terza risposta!",
    },
    {
      "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 Terza risposta",
    },
    {
      "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 Seconda risposta",
    }
  ],
  "includes": {
    "users": [
      {
        "name": "Persona originale",
        "id": "3001960000",
        "username": "OriginalPerson000"
      },
      {
        "name": "Prima persona"
        "id": "179201111",
        "username": "FirstPerson111"
      }
    ]
  },
  "meta": {
    "newest_id": "1280169177479744444",
    "oldest_id": "1279945722494811111",
    "result_count": 4
  }
}
Recupero di conversation_id come parametro tweet.fields Per richiedere il conversation_id per tutti i Post restituiti da un endpoint v2, aggiungi il parametro tweet.fields=conversation_id ai parametri della richiesta. Il campo conversation_id corrisponde sempre all’ID del Post originale nel thread di risposte della conversazione. Tutti i Post all’interno dello stesso thread di risposte, inclusi quelli in thread generati da thread precedenti, presenteranno lo stesso conversation_id.

Richiesta con il parametro 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'

Risposta

{
  "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             non fare push            \n             in produzione            \n               di venerdì                  \n|___________| \n(\\__/)",
        "created_at": "2019-11-29T20:51:47.000Z",
        "author_id": "2244994945",
        "conversation_id": "1200517737669378053"
      }
    ]
  }
}

Utilizzo di conversation_id come operatore di filtro

Il conversation_id può essere usato come parametro di query nella ricerca recente oppure come operatore all’interno di una regola per filtered stream. In questo modo otterrai l’intero thread della conversazione di Post, in tempo reale tramite filtered stream oppure in ordine cronologico inverso da search Tweets. Puoi anche ottenere il conteggio dei Post in una conversazione utilizzando questo operatore con Posts counts.

Richiesta per interrogare tramite 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'

Risposta

Nota: i risultati della ricerca di Post sono in ordine cronologico inverso.
{
  "data": [
    {
      "id": "1280169000000704333",
      "text": "@attributeisland @iterationjoe Che splendide creature! Buona #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