Markdown, BBCode y Emoji no se renderizan en la publicación de la API

Estoy usando la API de Discourse para actualizar una publicación a través de PUT; las actualizaciones se realizan, pero solo se analizan las etiquetas HTML aceptadas. Markdown, BBCode y emojis no se representan correctamente. Estoy pasando la solicitud PUT con un tipo de contenido de application/json porque en realidad es una carga útil JSON y es el único tipo de contenido que parece ser aceptado para la solicitud PUT a pesar de que la documentación dice que era una de las tres opciones.

¿Alguien tiene alguna idea de por qué el motor de renderizado no analiza las cosas cuando las actualizaciones se realizan a través de la API?

1 me gusta

Miraría los registros y también vería qué terminó en el campo de markdown sin procesar.

3 Me gusta

No veo errores en los registros y la carga útil sin procesar es exactamente lo que especifico que sea en la solicitud cURL que realiza la PUT. Cuando extraigo la vista JSON del tema, veo esto:


	`
<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>¿Por qué no funciona esto? :face_with_symbols_over_mouth: <br>
`

El gif que está ahí fue algo que puse en el OP y el motor de renderizado lo tradujo a HTML y todo está bien. Cuando agrego el <br>¿Por qué no funciona esto? :face_with_symbols_over_mouth: <br> a través de la API, se publica el texto sin procesar pero el motor de renderizado no hace nada con él. ¿Es este el comportamiento esperado? Supongo que una solución alternativa es que mi servicio formule la carga útil HTML completa y la pase, lo cual es un poco lamentable.

También vale la pena señalar que tengo un servicio separado que publica en un hilo de chat en vivo a través de un webhook entrante y los emojis se renderizan correctamente en el panel de chat. Esto parece ser específico de la API de publicaciones.

Emojis y HTML

Creo que el problema que tienes con los códigos cortos de emojis que están envueltos en etiquetas HTML es el comportamiento esperado. Se puede reproducir en una publicación creada dentro del editor de publicaciones de Discourse. Por ejemplo, :face_with_symbols_over_mouth: se renderizará como :face_with_symbols_over_mouth: dentro de este párrafo.

Si uso etiquetas p para crear un párrafo en lugar de depender del motor de markdown para hacerlo, el código corto no se renderizará. Por ejemplo:

<p>Esta oración contiene un código corto de emoji :face_with_symbols_over_mouth:</p>

Esta oración contiene un código corto de emoji :face_with_symbols_over_mouth:

Markdown

El problema con la publicación de markdown a través de la API parece solucionable, pero quizás sea complicado de manejar. Usando curl desde la terminal, algo como esto debería funcionar:

m="### este es un encabezado
                                                                                                                                                           
Este es un párrafo muy corto con algo de _énfasis_ en una palabra.

Este es otro párrafo con un emoji :slight_smile:

- este
- es
- una
- lista
- desordenada

Seguido por otro párrafo.

1) y
2) una
3) lista
4) ordenada"

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"

El parámetro skip_validations en la solicitud anterior está ahí solo para evitar errores como “cuerpo demasiado corto” o “título duplicado” al probar. Omite una gran cantidad de configuraciones del sitio (longitud mínima de publicación, entropía mínima del cuerpo, longitud mínima del título del tema, etc.)

No estoy seguro sobre el problema de BBCode. ¿Funcionan las etiquetas BBCode que intentas renderizar cuando se agregan al editor de publicaciones de tu sitio de Discourse?

1 me gusta