Wenn Sie bereits eine Website oder Anwendung haben und Diskussionen in Ihrem Discourse-Forum fördern möchten, kann es hilfreich sein, Discourse-Benachrichtigungen innerhalb Ihrer Anwendung anzuzeigen. Diese Anleitung zeigt Ihnen, wie Sie die Discourse API verwenden, um Benachrichtigungen für einen Benutzer abzurufen und sie als gelesen zu markieren.
Die empfohlene Vorgehensweise bei der Nutzung der API ist, dass Ihre Anwendung Backend-Anfragen an Discourse sendet und diese Daten dann an die Frontend-/Präsentationsschicht Ihrer Anwendung weitergibt.
Lesen Sie die API-Dokumentation für Informationen zur Verwendung der Discourse API.
Benachrichtigungen für einen Benutzer abrufen
Um Benachrichtigungen über die API zu erhalten, können Sie eine authentifizierte GET-Anfrage an den Endpunkt /notifications stellen. Sie können entweder den Benutzernamen, für den Sie Benachrichtigungen abrufen, im Header Api-Username oder als Abfrageparameter angeben: /notifications?username=<username>.
Optionale Abfrageparameter
| Parameter | Beschreibung |
|---|---|
username |
Der Benutzername, für den Benachrichtigungen abgerufen werden sollen |
filter |
Filtern nach Lesestatus: read oder unread |
filter_by_types |
Durch Kommata getrennte Liste von Benachrichtigungstypnamen zum Filtern (z. B. mentioned,replied) |
offset |
Offset für die Paginierung |
limit |
Anzahl der zurückzugebenden Benachrichtigungen (maximal 60) |
Beispielanfrage
curl -X GET "http://localhost:8080/notifications.json?username=blake.erickson" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: system"
Dies gibt die folgende JSON-Antwort zurück:
{
"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"
}
Dies gibt ein Benachrichtigungs-Array zurück. Wenn Sie nur ungelesene Benachrichtigungen anzeigen möchten, können Sie den Abfrageparameter filter=unread übergeben, damit der Server nur ungelesene Benachrichtigungen zurückgibt. Zum Beispiel:
curl -X GET "http://localhost:8080/notifications.json?username=blake.erickson&filter=unread" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: system"
Sie können diese Seite für eine Liste der Benachrichtigungstypen besuchen. Zum Beispiel entspricht der Benachrichtigungstyp 12 „granted_badge“ (Auszeichnung verliehen).
Benachrichtigungen als gelesen markieren
Nachdem Sie die Benachrichtigungen eines Benutzers abgerufen haben, können Sie diese als gelesen markieren, indem Sie eine PUT-Anfrage an /notifications/mark-read senden, wobei die id der Benachrichtigung im Anfragetext enthalten ist und der Benutzername im Anforderungs-Header angegeben wird.
Beispielanfrage
curl -X PUT "http://localhost:8080/notifications/mark-read" \
-H "Api-Key: e81c4022f148c872a98fb38dac1d9619c7f5b245b42ba98fa467968bbed7551e" \
-H "Api-Username: blake.erickson" \
-F "id=4"
Sie können auch die Benachrichtigungs-ID weglassen, dann werden alle Benachrichtigungen für diesen Benutzer als gelesen markiert.
Dies gibt eine einfache „OK“-JSON-Antwort zurück:
{
"success": "OK"
}