Existe-t-il un moyen d'obtenir un post cuisiné, mais sans oneboxes rendues ?

Pour un générateur d’articles instantanés Facebook externe, nous avons besoin des posts HTML traités, mais sans les oneboxes rendues…

Existe-t-il déjà une telle route ou un point de terminaison API pour les posts ?

Cela peut peut-être aider GitHub - discourse/raw-post-button · GitHub

Bonjour @adopilot, un grand merci pour votre retour. Pourriez-vous s’il vous plaît développer ?

Il semble s’agir d’un composant permettant d’afficher le message brut.

Nous recherchons une solution pour afficher un message formaté, mais sans les oneboxes.

Veuillez m’excuser, je pensais que vous aviez besoin du message brut. J’ai réalisé plus tard que j’avais tort et que cela avait déjà été publié.

Quelqu’un ? Est-ce que cela peut être réalisé d’une manière ou d’une autre ?

Salut @Terrapop,

Tu pourrais écrire un plugin pour masquer (ou supprimer) l’élément DOM de la One Box lorsque la chaîne d’agent utilisateur de la requête correspond à celle du bot FB.

J’espère que cela t’aidera.

Vous devrez traiter le HTML en aval, car les messages cuisinés contiennent déjà tout le HTML pour les oneboxes développées.

C’est exactement le problème. Comme les posts « cuits » contiennent des oneboxes (qui ne possèdent plus les liens multimédias d’origine, seuls les posts « raw » les conservent), nous ne pouvons pas les transformer en un format valide pour l’IA de Facebook.

Iframely génère des iframes valides pour l’IA à partir de liens autonomes. Nous avons essayé d’utiliser les posts « raw » avec un analyseur Markdown PHP (Markdown-It pour PHP) couplé à Iframely pour les liens autonomes, mais l’analyse Markdown de Discourse fait beaucoup plus, et nous ne souhaitons pas répliquer toute la magie appliquée par Discourse au Markdown. Ainsi, nous recherchons une méthode pour obtenir des posts « cuits », mais sans les oneboxes analysées (car nous souhaitons les traiter ultérieurement via Iframely).

Notre approche actuelle fonctionne pour les posts simples, c’est-à-dire : prendre le « raw » comme base, utiliser PHP Markdown-It pour le transformer en HTML, puis utiliser Iframely pour générer des cartes multimédias valides pour l’IA (les oneboxes ne le sont pas), avant de transformer le HTML en HTML IA pour Facebook et de le transmettre via le SDK PHP de Facebook. Cependant, comme Discourse applique de nombreuses règles supplémentaires à l’analyse Markdown, il serait idéal de pouvoir obtenir directement le HTML analysé depuis Discourse, mais simplement sans les oneboxes.

Vous n’avez pas besoin de publier votre message en dehors de Discourse. Il suffit de surcharger la méthode responsable et d’exclure la partie où les oneboxes sont générées. C’est l’idée générale.

Eh bien, nous ne souhaitons pas modifier le comportement de rendu global sur Discourse, mais nous avons besoin d’un point de terminaison (API) qui génère un message rendu sans oneboxes (tout en conservant les liens autonomes d’origine, par exemple sous forme de balises ).

Il suffit de masquer ou de supprimer l’élément DOM. C’est une tâche assez simple.

  1. Faites correspondre la chaîne d’agent utilisateur avec Ruby et définissez un booléen en cas de correspondance.
  2. Utilisez JavaScript pour masquer l’élément DOM si le booléen est vrai.

C’est essentiellement la méthode « standard » pour réaliser cela et des tâches similaires où un développeur ne souhaite pas afficher (ou veut supprimer) un élément DOM.


Note :

L’utilisation de la gemme Ruby ‘gon’ rend très simple le passage de n’importe quelle variable Ruby à JavaScript, mais je ne l’ai utilisée que dans une application Rails, pas avec EmberJS dans la pile (quoiqu’il existe de nombreuses façons de passer une variable Ruby à JS)..**