Se disponi di un sito web o di un’applicazione esistente e desideri incoraggiare la discussione sul tuo forum Discourse, può essere utile visualizzare le notifiche di Discourse all’interno della tua applicazione. Questa guida ti mostrerà come utilizzare l’API di Discourse per recuperare le notifiche per un utente e come contrassegnarle come lette.
Il modo consigliato per utilizzare l’API è far sì che la tua applicazione effettui richieste di back-end a Discourse e quindi passi tali dati allo strato di front-end/presentazione della tua applicazione.
Consulta la Documentazione API per informazioni su come utilizzare l’API di Discourse.
Recupero delle notifiche per un utente
Per ottenere le notifiche tramite l’API, puoi effettuare una richiesta GET autenticata all’endpoint /notifications. Puoi specificare il nome utente per il quale stai recuperando le notifiche nell’header Api-Username o come parametro di query: /notifications?username=<username>.
Parametri di query facoltativi
| Parametro | Descrizione |
|---|---|
username |
Il nome utente per cui recuperare le notifiche |
filter |
Filtra per stato di lettura: read o unread |
filter_by_types |
Elenco separato da virgole dei nomi dei tipi di notifica per cui filtrare (es. mentioned,replied) |
offset |
Offset per la paginazione |
limit |
Numero di notifiche da restituire (massimo 60) |
Esempio di richiesta
curl -X GET "http://localhost:8080/notifications.json?username=blake.erickson" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: system"
Questo restituirà la seguente risposta JSON
{
"notifications": [
{
"id": 3,
"user_id": 5,
"external_id": null,
"notification_type": 12,
"read": true,
"high_priority": false,
"created_at": "2019-06-17T20:26:05.670Z",
"post_number": null,
"topic_id": null,
"slug": null,
"data": {
"badge_id": 41,
"badge_name": "First Emoji",
"badge_slug": "first-emoji",
"badge_title": false,
"username": "blake"
}
},
{
"id": 2,
"user_id": 5,
"external_id": null,
"notification_type": 6,
"read": true,
"high_priority": true,
"created_at": "2019-06-17T20:26:04.305Z",
"post_number": 1,
"topic_id": 10,
"fancy_title": "Greetings!",
"slug": "greetings",
"data": {
"topic_title": "Greetings!",
"original_post_id": 14,
"original_post_type": 1,
"original_username": "discobot",
"revision_number": null,
"display_username": "discobot"
}
}
],
"total_rows_notifications": 2,
"seen_notification_id": 3,
"load_more_notifications": "/notifications?offset=60&username=blake"
}
Questo restituisce un array di notifiche. Se sei interessato a mostrare solo le notifiche non lette, puoi passare il parametro di query filter=unread per far sì che il server restituisca solo le notifiche non lette. Per esempio:
curl -X GET "http://localhost:8080/notifications.json?username=blake.erickson&filter=unread" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: system"
Puoi visitare questa pagina per un elenco dei tipi di notifica. Ad esempio, il tipo di notifica 12 corrisponde a “granted_badge”.
Contrrassegnare le notifiche come lette
Ora che hai recuperato le notifiche di un utente, puoi contrassegnarle come lette inviando una richiesta PUT a /notifications/mark-read con l’id della notifica nel corpo della richiesta e specificando il nome utente nell’header della richiesta.
Esempio di richiesta
curl -X PUT "http://localhost:8080/notifications/mark-read" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: blake.erickson" \
-F "id=4"
Puoi anche omettere l’ID della notifica e verranno contrassegnate come lette tutte le notifiche per quell’utente.
Questo restituirà una semplice risposta JSON “OK”:
{
"success": "OK"
}