Доступ к сервису геолокации программно

Я пытаюсь использовать сервис геолокации Sitecore 8.1 для определения местоположения клиента и предоставления правильного контекста сайта.

Есть ли у них API, который я могу использовать программно? Любой пример кода?

4 ответа

Решение

Вы действительно не должны. Служба не должна вызываться синхронно в запросах вашей страницы - задержка доставки страницы сайта, пока у вас не будет ответа. Это просто не будет работать очень хорошо.

Sitecore Marketplace предлагает GeoLite Resolver (ссылка на Github: https://github.com/adoprog/Sitecore-Geo-Lite-Resolver), и хотя он довольно старый, он все равно может быть включен и скомпилирован в ваши проекты Sitecore 8.

В основном он использует автономную облегченную копию базы данных MaxMind - достаточно хорошую, чтобы решить разрешение по стране (но не по городу) - и может очень быстро (<10 мс) ответить на запрос.

Вам понадобится Sitecore.Analytics.Lookups Пространство имен. Sitecore.Analytics.Lookups.GeoIpManager.GetGeoIpData должен начать вас.

Помните, что в коробке уже есть некоторые правила и условия, основанные на данных GeoIP. Это возможность (повторно) использовать их.

В Sitecore Marketplace также есть модуль MaxMind GeoIP2 Custom Lookup Provider, который также использует API базы данных MaxMind GeoIP2 City, не требуя xDB https://marketplace.sitecore.net/en/Modules/M/MaxMind_GeoIP2_CustomLookupProvider.aspx

Выше правильно, вы должны избегать вызова GeoManager, который приведен в качестве примера во многих местах, но мешает аналитике. Вы должны звонить LookupManager.GetInformationByIP(ip);, который разрешает IP и использует кеш GeoIP.

Мы столкнулись с этой же проблемой, когда пытались использовать данные Geo IP в конвейере Sitecore, так как GeoData еще не доступна в этой точке по умолчанию.

Задокументировано это по адресу: http://edgebytes.com/2016/09/08/calling-sitecore-geo-ip-location-service/

Другие вопросы по тегам