Je voulais juste vérifier, existe-t-il une méthode Discourse pour diffuser des publicités internes basées sur la localisation de l’utilisateur actuel ? Je comprends que nous avons : House Ads in the official Ad Plugin prêt pour diffuser les publicités, mais j’aimerais juste savoir s’il existe un moyen de trouver la localisation de l’utilisateur actuel via Discourse.
S’il n’y a pas de méthode Discourse pour faire cela (comme nécessiter un outil tiers), je sais que nous avons également les adresses IP des inscriptions, existe-t-il un moyen de les utiliser pour déterminer la localisation d’un utilisateur ?
Quel que soit le contexte d’un plugin publicitaire existant ou hypothétique, il existe une fonctionnalité intégrée pour cela dans Discourse, disponible depuis la vue d’administration du profil d’un utilisateur :
J’ai essayé de créer un petit script Python pour cela, mais il ne me renvoie qu’une page web et non du JSON. Lorsque j’ai ajouté .json à l’URL GET, il ne renvoie que {}. Cependant, lorsque je fais la requête avec l’ID utilisateur (https://your-discourse.com/admin/users/{user_id}/ip-info.json?ip={user_ip}), il semble bien que les informations de l’utilisateur avec l’adresse IP soient présentes.
J’ai même essayé de visiter cette URL depuis le navigateur, pour obtenir seulement un message Oops! That page doesn’t exist or is private.
Soit dit en passant, notre Discourse est actuellement sur la version Stable (v3.1.1).
Je voulais juste demander, ai-je besoin d’une licence MaxMind pour que cela fonctionne ? Sinon, est-il possible que le point de terminaison fourni soit incorrect ? J’obtiens une réponse de /admin/users/{user_id}.json, mais pour une raison quelconque, je n’obtiens pas de réponse appropriée de /admin/users/ip-info?ip={user_ip}. J’obtiens juste une page web vide de notre site Discourse en HTML.
De plus, existe-t-il un lien vers la liste des points de terminaison utiles que Discourse fournit, comme celui que vous avez partagé ?
C’est parce qu’il ne renvoie que le contenu de https://votre-discourse.com/admin/users/{user_id}.json. Il ignore la partie ip-info, ce n’est pas un point de terminaison valide ici.
Et oui, je n’y avais pas pensé mais oui, je pense que vous avez probablement besoin d’une clé Maxmind pour renvoyer l’emplacement.
Donc, pour résumer :
Si vous voulez obtenir l’IP d’un utilisateur, vous devez faire une requête GET (avec des identifiants d’administrateur) à https://votre-discourse.com/admin/users/{user_id}.json. Elle renverra l’IP parmi d’autres informations utilisateur.
Si vous voulez localiser l’IP, vous avez besoin d’une clé Maxmind (à ajouter dans app.yml), et faire une requête GET à ce point de terminaison : https://votre-discourse.com/admin/users/ip-info.json?ip={user_ip}.
Il y a la documentation de l’API : https://docs.discourse.org/
Mais tous les points de terminaison ne sont pas listés ici. L’API de Discourse est très facile à rétro-concevoir, cependant : Reverse engineer the Discourse API. C’est ainsi que j’ai obtenu les informations ici.
Merci @Canapin, je pense que c’est ce dont j’avais besoin. Je vais voir si je peux obtenir une licence MaxMind et continuer à partir de là. Je mettrai à jour ce fil si j’obtiens une licence et que je réessaie. Merci !
J’ai obtenu une licence MaxMind gratuite et l’API https://your-discourse.com/admin/users/ip-info.json?ip={user_ip} . fonctionne très bien, merci !
J’ai une question supplémentaire, puisque cela nécessite un ID utilisateur pour obtenir l’adresse IP, puis appeler cette API ci-dessus, qu’en est-il des utilisateurs anonymes ? Et s’il était possible de leur servir des publicités, mais qu’ils n’ont pas d’ID utilisateur ? Serait-ce toujours possible, ou est-ce strictement réservé aux utilisateurs connectés ?