Passer au contenu principal

Fils de conversation avec la X API

Si vous observez l’évolution des conversations sur X, un Post peut déclencher plusieurs fils de discussion, chacun pouvant s’allonger et gagner en complexité à mesure que davantage de personnes interviennent. L’identification des relations entre les Posts et la compréhension des fils de conversation font partie de la charge utile et des capacités de recherche de la X API v2. Lorsque des Posts sont publiés en réponse à un Post (appelée une réponse), ou en réponse à une réponse, chaque réponse possède désormais un conversation_id défini, qui correspond à l’ID de Post du Post original à l’origine de la conversation. Les réponses à un Post donné, ainsi que les réponses à ces réponses, sont toutes incluses dans la conversation issue du Post original. Quel que soit le nombre de fils de réponse, ils partageront tous un conversation_id commun pointant vers le Post original qui a lancé la conversation. Avec la X API v2, vous pouvez récupérer et reconstituer un fil de conversation complet, ce qui vous permet de comprendre ce qui est dit et comment les conversations et les idées évoluent.

Exemple de fil de conversation

Ci-dessous, un exemple de fil de conversation impliquant cinq personnes différentes, dont une réponse à une autre réponse.
{
  "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 Répondre à la troisième réponse !",
    },
    {
      "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 Troisième réponse",
    },
    {
      "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 Deuxième réponse",
    }
  ],
  "includes": {
    "users": [
      {
        "name": "Personne d’origine",
        "id": "3001960000",
        "username": "OriginalPerson000"
      },
      {
        "name": "Première personne"
        "id": "179201111",
        "username": "FirstPerson111"
      }
    ]
  },
  "meta": {
    "newest_id": "1280169177479744444",
    "oldest_id": "1279945722494811111",
    "result_count": 4
  }
}
Récupération de conversation_id en tant que paramètre tweet.fields Pour obtenir le conversation_id pour tous les Posts renvoyés par un endpoint v2, ajoutez le champ tweet.fields=conversation_id aux paramètres de requête. Le champ conversation_id correspond toujours à l’ID de Post du Post d’origine dans le fil de réponses de la conversation. Tous les Posts au sein du même fil de réponses, y compris les fils de réponses créés à partir de fils de réponses antérieurs, afficheront le même conversation_id.

Requête avec le paramètre 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'

Réponse

{
  "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             ne pas déployer            \n             en prod le            \n               vendredi                  \n|___________| \n(\\__/)",
        "created_at": "2019-11-29T20:51:47.000Z",
        "author_id": "2244994945",
        "conversation_id": "1200517737669378053"
      }
    ]
  }
}

Utilisation de conversation_id comme opérateur de filtrage

Le conversation_id peut être utilisé comme paramètre de la query dans la recherche récente ou comme opérateur au sein d’une règle pour le flux filtré. Cela renverra l’ensemble du fil de conversation des Posts, soit en temps réel via le flux filtré, soit dans l’ordre chronologique inverse à partir de search Tweets. Vous pouvez également obtenir un comptage des Posts dans une conversation en utilisant cet opérateur avec Posts counts.

Requête pour effectuer une recherche par 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'

Réponse

Remarque : les résultats de recherche de Posts sont présentés par ordre antéchronologique.
{
  "data": [
    {
      "id": "1280169000000704333",
      "text": "@attributeisland @iterationjoe Quelles magnifiques créatures ! Joyeuse #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