Presumo che quello che vuoi fare sia generare una risposta da OpenAI quando un determinato nome utente (ad esempio, UserA) viene menzionato in un post. Se è corretto, invece di effettuare richieste API a Discourse per ottenere le notifiche, potresti puntare un webhook di Discourse Notification Event al server della tua applicazione Python. L’applicazione Python dovrebbe esaminare il payload del webhook. Se il notification_type del payload è impostato su 1 e il suo user_id corrisponde all’ID dell’utente per cui desideri ricevere notifiche, effettueresti una richiesta API a Discourse per ottenere il post impostato nel campo original_post_id del payload. Quindi invieresti il contenuto del post restituito da quella richiesta a OpenAI.
Ecco un esempio di come appare il payload per una notifica di menzione:
{
"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": "Dovrei essere in grado di chiamare questo argomento come voglio",
"slug": "i-should-be-able-to-call-this-topic-anything",
"data": {
"topic_title": "Dovrei essere in grado di chiamare questo argomento come voglio",
"original_post_id": 10999,
"original_post_type": 1,
"original_username": "scossar",
"revision_number": null,
"display_username": "scossar"
}
}
}
Il vantaggio di questo approccio è che ti consentirebbe di ricevere notifiche in tempo reale, senza dover effettuare un gran numero di richieste API al tuo sito Discourse.
Se scegli l’approccio webhook, sarebbe una buona idea impostare il campo “Secret” del webhook su Discourse, quindi convalidare la richiesta sulla tua applicazione Python per assicurarti che la chiave segreta sia impostata correttamente. Non ho ancora provato a configurare un percorso su un’applicazione Python per farlo. I dettagli su come convalidare un “Secret” webhook su WordPress sono qui: wp-discourse-custom-webhook-request/wp-discourse-custom-webhook-request.php at master · scossar/wp-discourse-custom-webhook-request · GitHub.