Solo quería comprobar si existe una forma en Discourse de mostrar anuncios internos basados en la ubicación del usuario actual. Entiendo que tenemos: House Ads in the official Ad Plugin listo para mostrar los anuncios, pero solo me gustaría saber si hay una forma de encontrar la ubicación del usuario actual a través de Discourse.
Si no hay una forma en Discourse de hacer esto (como requerir una herramienta de terceros), también tenemos las IPs de los registros, ¿hay alguna forma de usarlas para determinar la ubicación de un usuario?
Independientemente del contexto de un complemento de anuncios existente o hipotético, hay una función integrada para esto en Discourse disponible desde la vista de administrador del perfil de un usuario:
Intenté crear un script corto de Python para esto, pero solo me devuelve una página web y no JSON. Cuando agregué .json a la URL GET, solo devuelve {}. Sin embargo, cuando hago la solicitud con el ID de usuario (https://your-discourse.com/admin/users/{user_id}/ip-info.json?ip={user_ip}), parece que la información del usuario con la dirección IP está presente.
Incluso intenté visitar esa URL desde el navegador, solo para obtener un Oops! That page doesn’t exist or is private.
Como dato, nuestra instancia de Discourse está actualmente en la versión Stable (v3.1.1).
Solo quería preguntar, ¿necesito una licencia de MaxMind para que esto funcione? Si no es así, ¿es posible que el endpoint proporcionado sea incorrecto? Estoy recibiendo una respuesta de /admin/users/{user_id}.json, pero por alguna razón no obtengo una respuesta adecuada de /admin/users/ip-info?ip={user_ip}. Solo obtengo una página web en blanco de nuestro sitio de Discourse en HTML.
Además, ¿hay un enlace a la lista de endpoints útiles que proporciona Discourse, como el que compartiste?
Eso es porque solo devuelve el contenido de https://tu-discourse.com/admin/users/{user_id}.json. Ignora la parte ip-info, no es un punto final válido aquí.
Y sí, no había pensado en eso :face_palm: pero sí, creo que probablemente necesites una clave de Maxmind para poder devolver la ubicación.
Entonces, para resumir:
Si quieres obtener la IP de un usuario, necesitas hacer una solicitud GET (con credenciales de administrador) a https://tu-discourse.com/admin/users/{user_id}.json. Devolverá la IP entre otra información del usuario.
Si quieres localizar la IP, necesitas una clave de Maxmind (que se añadirá en app.yml) y hacer una solicitud GET a este punto final: https://tu-discourse.com/admin/users/ip-info.json?ip={user_ip}.
Está la documentación de la API: https://docs.discourse.org/
Pero no todos los puntos finales están listados aquí. La API de Discourse es muy fácil de hacer ingeniería inversa, sin embargo: Reverse engineer the Discourse API. Así es como obtuve la información aquí.
Gracias @Canapin, creo que esto es lo que necesitaba. Veré si puedo conseguir una licencia de MaxMind y seguiré a partir de ahí. Actualizaré este hilo si consigo una licencia y lo intento de nuevo. ¡Gracias!
He adquirido una licencia gratuita de MaxMind y la API https://your-discourse.com/admin/users/ip-info.json?ip={user_ip} . funciona muy bien, ¡gracias!
Tengo una pregunta adicional, ya que esto requiere el ID de usuario para obtener la IP y luego llamar a esta API anterior, ¿qué pasa con los usuarios anónimos? ¿Qué pasa si quisiéramos servirles anuncios también, pero no tienen un ID de usuario? ¿Seguiría siendo posible, o esto es estrictamente para usuarios registrados?