Markdown, BBCode und Emoji werden in der API-Nachricht nicht gerendert

Ich verwende die Discourse-API, um einen Beitrag über PUT zu aktualisieren. Die Aktualisierungen werden vorgenommen, aber nur akzeptierte HTML-Tags werden analysiert. Markdown, BBCode und Emojis werden nicht korrekt gerendert. Ich sende die PUT-Anfrage mit einem Content-Type von application/json, da es sich tatsächlich um eine JSON-Nutzlast handelt und der einzige Content-Type zu sein scheint, der für die PUT-Anfrage akzeptiert wird, obwohl die Dokumentation besagt, dass es eine von drei Optionen war.

Hat jemand eine Ahnung, warum die Rendering-Engine Dinge nicht analysiert, wenn Aktualisierungen über die API vorgenommen werden?

1 „Gefällt mir“

Ich würde mir die Protokolle ansehen und auch sehen, was im Feld „roher Markdown“ gelandet ist.

3 „Gefällt mir“

Ich sehe keine Fehler in den Protokollen und die Rohdaten sind exakt das, was ich in der cURL-Anfrage angebe, die das PUT durchführt. Wenn ich die JSON-Ansicht des Themas abrufe, sehe ich Folgendes:


	`
<p><img src="https://global.discourse-cdn.com/standard10/uploads/wysterialane/original/1X/284fb6069edededf16b0830d468eaf03bc261616.webp" alt="mother of god shades GIF" data-base62-sha1="5KBSuBIpIj3xlACzeZINBKw7wEu" width="262" height="200" class="animated"></p><br>Warum funktioniert das nicht? :face_with_symbols_over_mouth: <br>`

Das GIF darin war etwas, das ich in die OP eingefügt habe, und die Rendering-Engine hat es in HTML übersetzt und alles ist in Ordnung. Wenn ich den <br>Warum funktioniert das nicht? :face_with_symbols_over_mouth: <br>-Teil über die API hinzufüge, wird der Rohtext gepostet, aber die Rendering-Engine tut nichts damit. Ist das erwartetes Verhalten? Ich schätze, eine Problemumgehung besteht darin, dass mein Dienst die vollständige HTML-Nutzlast formuliert und diese übergibt, was irgendwie schlecht ist.

Es ist auch erwähnenswert, dass ich einen separaten Dienst habe, der über einen eingehenden Webhook in einen Live-Chat-Thread postet und Emojis im Chat-Bereich korrekt gerendert werden. Dies scheint spezifisch für die Posts-API zu sein.

Emojis und HTML

Ich denke, das Problem, auf das Sie mit Emoji-Kurzcodes stoßen, die in HTML-Tags eingeschlossen sind, ist das erwartete Verhalten. Es kann in einem Beitrag reproduziert werden, der im Discourse-Beitragseditor erstellt wurde. Zum Beispiel wird :face_with_symbols_over_mouth: in diesem Absatz als :face_with_symbols_over_mouth: gerendert.

Wenn ich p-Tags verwende, um einen Absatz zu erstellen, anstatt mich auf die Markdown-Engine zu verlassen, wird der Kurzcode nicht gerendert. Zum Beispiel:

<p>Dieser Satz enthält einen Emoji-Kurzcode :face_with_symbols_over_mouth:</p>

Dieser Satz enthält einen Emoji-Kurzcode :face_with_symbols_over_mouth:

Markdown

Das Problem mit dem Posten von Markdown über die API scheint lösbar, aber möglicherweise schwierig zu handhaben zu sein. Mit curl vom Terminal sollte etwas wie das Folgende funktionieren:

m="### Dies ist eine Überschrift


Dies ist ein sehr kurzer Absatz mit einiger _Hervorhebung_ eines Wortes.

Dies ist ein weiterer Absatz mit einem :slight_smile: Emoji

- dies
- ist
- eine
- unsortierte
- Liste

Gefolgt von einem weiteren Absatz.

1) und
2) eine
3) sortierte
4) Liste"

curl -X POST "http://localhost:4200/posts.json" -H "Api-Key: $api_key" -H "Api-Username: simon" -F "title=Markdown test one" -F "category=6" -F "skip_validations=true" -F "raw=$m"

Der Parameter skip_validations in der obigen Anfrage dient nur dazu, Fehler wie “body too short” oder “duplicate title” beim Testen zu vermeiden. Er umgeht eine Reihe von Website-Einstellungen (minimale Beitragslänge, minimale Körperentropie, minimale Themenüberschriftenlänge usw.)

Ich bin mir bezüglich des BBCode-Problems nicht sicher. Funktionieren die BBCode-Tags, die Sie rendern möchten, wenn sie zum Beitragseditor Ihrer Discourse-Website hinzugefügt werden?

1 „Gefällt mir“