Eu só queria verificar, existe uma maneira no Discourse de exibir anúncios internos com base na localização do usuário atual? Entendo que temos: House Ads in the official Ad Plugin pronto para exibir os anúncios, mas eu só gostaria de saber se há uma maneira de encontrar a localização do usuário atual via Discourse.
Se não houver uma maneira no Discourse de fazer isso (como exigir uma ferramenta de terceiros), eu sei que também temos os IPs para inscrições, existe uma maneira de usá-los para determinar a localização de um usuário?
Independentemente do contexto de um plugin de anúncio existente ou hipotético, há um recurso integrado para isso no Discourse disponível na visualização de administrador do perfil de um usuário:
Eu tentei criar um pequeno script em Python para isso, mas ele só está retornando uma página da web para mim e não JSON. Quando adicionei .json à URL GET, ele está retornando apenas {}. No entanto, quando faço a requisição com o User ID (https://your-discourse.com/admin/users/{user_id}/ip-info.json?ip={user_ip}), parece que as informações do usuário com o Endereço IP são exibidas.
Eu até tentei visitar essa URL do navegador, apenas para receber um Oops! Essa página não existe ou é privada.
A título de informação, nosso Discourse está atualmente na versão Stable (v3.1.1).
Eu só queria perguntar, preciso de uma licença MaxMind para que isso funcione? Se não, é possível que o endpoint fornecido esteja incorreto? Estou recebendo uma resposta de /admin/users/{user_id}.json, mas por algum motivo não estou recebendo uma resposta adequada de /admin/users/ip-info?ip={user_ip}. Eu só recebo uma página em branco do nosso site Discourse em HTML.
Além disso, existe um link para a lista de endpoints úteis que o Discourse fornece, como o que você compartilhou?
Isso ocorre porque ele retorna apenas o conteúdo de https://seu-discourse.com/admin/users/{user_id}.json. Ele ignora a parte ip-info, não é um endpoint válido aqui.
E sim, eu não pensei nisso mas sim, acho que você provavelmente precisa de uma chave Maxmind para retornar a localização.
Então, para resumir:
Se você quiser obter o IP de um usuário, você precisa fazer uma solicitação GET (com credenciais de administrador) para https://seu-discourse.com/admin/users/{user_id}.json. Ele retornará o IP entre outras informações do usuário.
Se você quiser localizar o IP, você precisa de uma chave Maxmind (a ser adicionada em app.yml) e fazer uma solicitação GET para este endpoint: https://seu-discourse.com/admin/users/ip-info.json?ip={user_ip}.
Há a documentação da API: https://docs.discourse.org/
Mas nem todos os endpoints estão listados aqui. A API do Discourse é muito fácil de fazer engenharia reversa, no entanto: Reverse engineer the Discourse API. Foi assim que obtive as informações aqui.
Obrigado @Canapin, acho que é isso que eu precisava. Vou ver se consigo obter uma licença MaxMind e seguir em frente. Atualizarei este tópico se adquirir uma licença e tentar novamente. Valeu!
Adquiri uma licença gratuita do MaxMind e a API https://your-discourse.com/admin/users/ip-info.json?ip={user_ip}. está funcionando muito bem, obrigado!
Tenho uma pergunta adicional, já que isso requer o ID do usuário para obter o IP e, em seguida, chamar esta API acima, o que acontece com os usuários anônimos? E se quiséssemos servir anúncios para eles também, mas eles não têm um ID de usuário? Ainda seria possível, ou isso é estritamente para usuários logados?