Gibt es eine Möglichkeit, In-House-Anzeigen basierend auf dem aktuellen Standort des Nutzers auszuliefern?

Hallo!

Ich wollte nur nachfragen, gibt es eine Discourse-Möglichkeit, Inhouse-Anzeigen basierend auf dem Standort des aktuellen Benutzers auszuspielen? Ich verstehe, dass wir House Ads in the official Ad Plugin für die Ausspielung von Anzeigen haben, aber ich möchte nur wissen, ob es eine Möglichkeit gibt, den Standort des aktuellen Benutzers über Discourse zu ermitteln.

Wenn es keine Discourse-Möglichkeit gibt, dies zu tun (z. B. die Notwendigkeit eines Drittanbieter-Tools), kenne ich auch die IPs für Anmeldungen. Gibt es eine Möglichkeit, diese zur Bestimmung des Standorts eines Benutzers zu verwenden?

Viele Grüße!

Hallo hyphalos! :blob_wave:

Unabhängig vom Kontext eines bestehenden oder hypothetischen Anzeigen-Plugins gibt es in Discourse eine integrierte Funktion dafür, die in der Admin-Ansicht des Benutzerprofils verfügbar ist:

Der Endpunkt lautet: https://your-discourse.com/admin/users/ip-info.json?ip={user_ip}, mit einer GET-Anfrage.

Hallo @Canapin,

Vielen Dank für deine schnelle Antwort!

Ich habe versucht, ein kurzes Python-Skript dafür zu erstellen, aber es gibt mir nur eine Webseite und kein JSON zurück. Als ich .json zur GET-URL hinzugefügt habe, gab es nur {} zurück. Wenn ich jedoch die Anfrage mit der Benutzer-ID stelle (https://your-discourse.com/admin/users/{user_id}/ip-info.json?ip={user_ip}), scheint die Benutzerinformation mit der IP-Adresse angezeigt zu werden.

Ich habe sogar versucht, diese URL vom Browser aus aufzurufen, erhielt aber nur die Meldung Oops! That page doesn’t exist or is private.

Nur zur Information, unsere Discourse-Instanz ist derzeit auf der stabilen Version (v3.1.1).

Ich wollte nur fragen, ob ich eine MaxMind-Lizenz benötige, damit dies funktioniert? Wenn nicht, ist es möglich, dass der angegebene Endpunkt falsch ist? Ich erhalte eine Antwort von /admin/users/{user_id}.json, aber aus irgendeinem Grund keine ordnungsgemäße Antwort von /admin/users/ip-info?ip={user_ip}. Ich erhalte nur eine leere Webseite von unserer Discourse-Seite in HTML.

Gibt es außerdem einen Link zu einer Liste nützlicher Endpunkte, die Discourse bereitstellt, wie den von Ihnen geteilten?

Vielen Dank!

Das liegt daran, dass nur der Inhalt von https://your-discourse.com/admin/users/{user_id}.json zurückgegeben wird. Der Teil ip-info wird ignoriert, da er hier kein gültiger Endpunkt ist.

Und ja, daran habe ich nicht gedacht :person_facepalming:, aber ja, ich glaube, Sie benötigen wahrscheinlich einen Maxmind-Schlüssel, um den Standort zurückzugeben.

Zusammenfassend lässt sich sagen:

  1. Wenn Sie die IP eines Benutzers abrufen möchten, müssen Sie eine GET-Anfrage (mit Administrator-Anmeldeinformationen) an https://your-discourse.com/admin/users/{user_id}.json stellen. Diese gibt die IP zusammen mit anderen Benutzerinformationen zurück.

  2. Wenn Sie die IP lokalisieren möchten, benötigen Sie einen Maxmind-Schlüssel (der in app.yml hinzugefügt werden muss) und müssen eine GET-Anfrage an diesen Endpunkt stellen: https://your-discourse.com/admin/users/ip-info.json?ip={user_ip}.

Es gibt die API-Dokumentation: https://docs.discourse.org/
Aber nicht alle Endpunkte sind hier aufgelistet. Die API von Discourse lässt sich sehr leicht durch Rückentwicklung analysieren: Reverse engineer the Discourse API. So habe ich die Informationen hier erhalten.

Danke @Canapin , ich glaube, das ist es, was ich brauchte. Ich werde sehen, ob ich eine MaxMind-Lizenz bekommen und von dort aus weitermachen kann. Ich werde diesen Thread aktualisieren, wenn ich eine Lizenz erworben und es erneut versucht habe. Prost!

1 „Gefällt mir“

Hallo @Canapin ,

Ich habe eine kostenlose MaxMind-Lizenz erworben und die API https://your-discourse.com/admin/users/ip-info.json?ip={user_ip} . funktioniert hervorragend, vielen Dank!

Ich habe eine zusätzliche Frage: Da dies eine Benutzer-ID erfordert, um die IP-Adresse abzurufen und dann die obige API aufzurufen, was ist mit anonymen Benutzern? Was ist, wenn wir auch ihnen Werbung ausliefern möchten, sie aber keine Benutzer-ID haben? Wäre das trotzdem möglich oder ist dies nur für angemeldete Benutzer gedacht?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.