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?

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

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?