Exposer external_id dans embed.js

J’ai besoin de charger des publications sur un site externe où je ne connais pas le post_id mais je connais l’external_id que j’ai configuré lors de la création du sujet.

Quelqu’un peut-il exposer la variable external_id dans la logique de embed.js ou m’apprendre ce qui me manque ?

Exemple de support nécessaire :

window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};

Je suppose que vous avez créé les sujets via l’API et défini le paramètre external_id.

Je ne suis pas sûr que cela aide, mais Discourse a une route t/external_id/:external_id. Il semble qu’elle ne renvoie que des données JSON :

Vous pouvez donc obtenir le JSON du sujet à (par exemple)

/t/external_id/2023-4.json

Cela renverrait le contenu et l’id du sujet Discourse. Je ne pense pas que cela résolve votre problème cependant.

En testant cela maintenant, des données JSON sont renvoyées, mais Discourse effectue une redirection automatique vers l’URL réelle du sujet Discourse lorsque vous effectuez la requête. Par exemple, une requête GET vers http://localhost:4200/t/external_id/1.json me redirige vers http://localhost:4200/t/testing-the-external-id-param/206.json

Je cherche à avoir quelque chose sous la forme de publications intégrées. Discourse fait déjà un excellent travail avec cette mise en page et je ne veux pas réinventer la roue.

En n’autorisant pas la recherche par external_id, je devrais stocker l’identifiant du sujet du forum dans ma base de données et rechercher de cette façon. Cela semble redondant alors que nous avons déjà une variable unique stockée dans external_id lorsque j’ai créé le sujet à partir de l’API.

1 « J'aime »

Je pense que je comprends maintenant. Vous souhaitez utiliser le script présenté ici : https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6. Mais au lieu d’utiliser le paramètre topicId, vous souhaitez utiliser le paramètre external_id.

Il s’agit peut-être d’une fonctionnalité à ajouter.

Il pourrait également être possible de faire une requête côté client vers (par exemple)
http://localhost:4200/t/external_id/1.json
Extraire ensuite l’URL réelle du sujet de la réponse et soit analyser cette URL pour extraire l’id du sujet, soit faire une deuxième requête vers l’URL du sujet pour obtenir l’id du sujet.
Cela semble susceptible d’erreurs.

Si vous ajoutez le script d’intégration côté serveur au lieu de côté client, vous pourriez simplement faire une requête GET vers http://localhost:4200/t/external_id/1.json, effectuer les actions nécessaires pour obtenir l’id du sujet Discourse, puis insérer le script sur votre page Web en utilisant cet id.

C’est un bon retour et cela me donne matière à réflexion. La demande de fonctionnalité est la plus simple, mais j’aime certaines de vos idées auxquelles je n’avais pas pensé !

1 « J'aime »