Доступ к сервису геолокации программно
Я пытаюсь использовать сервис геолокации 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/