Markdown, BBCode et Emoji non rendus dans le post API

J’utilise l’API Discourse pour mettre à jour un post via PUT ; les mises à jour sont effectuées, mais seules les balises HTML acceptées sont analysées. Le Markdown, le BBCode et les emojis ne sont pas rendus correctement. J’envoie la requête PUT avec un type de contenu de application/json car c’est effectivement une charge utile JSON et c’est le seul type de contenu qui semble être accepté pour la requête PUT, bien que la documentation indique qu’il s’agissait de l’une des trois options.

Quelqu’un a-t-il une idée de pourquoi le moteur de rendu n’analyse pas les éléments lors des mises à jour effectuées via l’API ?

1 « J'aime »

Je regarderais les journaux et je verrais également ce qui se trouve dans le champ markdown brut.

3 « J'aime »

Je ne vois aucune erreur dans les journaux et la charge utile brute est exactement ce que je spécifie dans la requête cURL qui effectue le PUT. Lorsque je récupère la vue JSON du sujet, je vois ceci :


	`
<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>Pourquoi ça ne marche pas ? :face_with_symbols_over_mouth:
<br>`

Le GIF qui s’y trouve était quelque chose que j’avais mis dans l’OP et le moteur de rendu l’a traduit en HTML et tout va bien. Lorsque j’ajoute le <br>Pourquoi ça ne marche pas ? :face_with_symbols_over_mouth: <br> via l’API, le texte brut est publié mais le moteur de rendu n’en fait rien. Est-ce le comportement attendu ? Je suppose qu’une solution de contournement consiste à faire en sorte que mon service formule la charge utile HTML complète et la passe, ce qui est un peu nul.

Il convient également de noter que j’ai un service distinct qui publie dans un fil de discussion en direct via un webhook entrant et que les emojis s’affichent correctement dans le panneau de discussion. Cela semble être spécifique à l’API des publications.

Emojis et HTML

Je pense que le problème que vous rencontrez avec les codes courts d’emoji encapsulés dans des balises HTML est le comportement attendu. Il peut être reproduit dans un message créé dans l’éditeur de messages de Discourse. Par exemple, :face_with_symbols_over_mouth: sera rendu comme :face_with_symbols_over_mouth: dans ce paragraphe.

Si j’utilise des balises p pour créer un paragraphe au lieu de m’appuyer sur le moteur markdown, le code court ne sera pas rendu. Par exemple :

<p>Cette phrase contient un code court d'emoji :face_with_symbols_over_mouth:</p>

Cette phrase contient un code court d'emoji :face_with_symbols_over_mouth:

Markdown

Le problème avec la publication de markdown via l’API semble résoluble, mais peut être délicat à utiliser. En utilisant curl depuis le terminal, quelque chose comme ceci devrait fonctionner :

m="### ceci est un titre
                                                                                                                                                           
Ceci est un paragraphe très court avec une _emphase_ sur un mot.

Ceci est un autre paragraphe avec un emoji :slight_smile:

- ceci
- est
- une
- liste
- non ordonnée

Suivi d'un autre paragraphe.

1) et
2) une
3) liste
4) ordonnée"

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

Le paramètre skip_validations dans la requête ci-dessus est juste là pour éviter les erreurs de type “corps trop court” ou “titre dupliqué” lors des tests. Il contourne un tas de paramètres du site (longueur minimale du message, entropie minimale du corps, longueur minimale du titre du sujet, etc.)

Je ne suis pas sûr pour le problème du BBCode. Les balises BBCode que vous essayez de rendre fonctionnent-elles lorsqu’elles sont ajoutées à l’éditeur de messages de votre site Discourse ?

1 « J'aime »