Je suppose que ce que vous voulez faire est de générer une réponse d’OpenAI lorsqu’un nom d’utilisateur donné (par exemple, UserA) est mentionné dans un message. Si c’est le cas, au lieu de faire des requêtes API à Discourse pour obtenir les notifications, vous pourriez pointer un webhook d’événement de notification Discourse vers le serveur de votre application Python. L’application Python devrait examiner la charge utile du webhook. Si le notification_type de la charge utile était défini sur 1, et que son user_id correspondait à l’ID de l’utilisateur pour lequel vous souhaitez recevoir des notifications, vous feriez une requête API à Discourse pour obtenir le message défini dans le champ original_post_id de la charge utile. Ensuite, vous enverriez le contenu du message renvoyé par cette requête à OpenAI.
Voici un exemple de ce à quoi ressemble la charge utile d’une notification de mention :
{
"notification": {
"id": 55267,
"user_id": 2,
"notification_type": 1,
"read": false,
"high_priority": false,
"created_at": "2022-12-08T23:23:36.379Z",
"post_number": 5,
"topic_id": 277,
"fancy_title": "I should be able to call this topic anything",
"slug": "i-should-be-able-to-call-this-topic-anything",
"data": {
"topic_title": "I should be able to call this topic anything",
"original_post_id": 10999,
"original_post_type": 1,
"original_username": "scossar",
"revision_number": null,
"display_username": "scossar"
}
}
}
L’avantage de cette approche est qu’elle vous permettrait de recevoir des notifications en temps réel, sans avoir à effectuer un grand nombre de requêtes API à votre site Discourse.
Si vous optez pour l’approche par webhook, il serait judicieux de définir le champ “Secret” du webhook sur Discourse, puis de valider la requête sur votre application Python pour vous assurer que la clé secrète est correctement définie. Je n’ai pas encore essayé de configurer une route sur une application Python pour cela. Les détails sur la façon de valider un secret de webhook sur WordPress sont ici : wp-discourse-custom-webhook-request/wp-discourse-custom-webhook-request.php at master · scossar/wp-discourse-custom-webhook-request · GitHub.