Настройка местоположения 1с битрикс
В версии модуля sale 17.0.13 появилось автоматическое определение местоположения покупателя при оформлении заказа. Но это можно использовать и в своих целях, соответствующие классы и методы доступны для использования разработчиками.
В sale 17.0.17 замечен баг с геолокацией (Ошибка "Call to undefined method Bitrix\Main\Service\GeoIp\Manager::getData()"). Из-за этого не работает оформление заказа (sale.order.ajax). Для получения костыля нужно написать в техподдержку или обновиться до sale 17.0.18.
Определение местоположения реализовано в классах пространства имён \Bitrix\Main\Service\GeoIp . Для работы примеров будет использоваться сокращение:
Обработчики геолокации
Доступные обработчики можно найти и настроить в настройках Настройки > Настройки продукта > Геолокация. На момент написания статьи доступны обработчики:
- MaxMind;
- Sypex Geo;
- Расширение GeoIP.
Для первых двух нужны ключи для доступа к соответствующим сервисам. Для тестирования проще и дешевле зарегистрироваться на Sypex Geo, там дают 30000 бесплатных запросов в месяц. Ключ для сервиса будет указан в личном кабинете, его нужно будет указать в настройках обработчика.
Обработчики геолокации - классы-наследники GeoIp\Base . Из коробки идут 3 обработчика, как говорилось выше:
Добавить свои можно с помощью события onMainGeoIpHandlersBuildList модуля main:
Примеры обработчиков можно найти в ядре, обязательно требуется определить три метода: getTitle , getDescription и getData .
Использование
Для определения местоположения требуется IP пользователя. Его можно получить с помощью метода GeoIp\Manager::getRealIp :
Для получения геоинформации по этому IP нужно вызвать метод GeoIp\Manager::getDataResult :
Метод возвращает объект класса GeoIp\Result (до версии 17.0.18 – GeoIp\DataResult ). Поля объекта:
Из поля 'handlerClass' видно, что для определения использовался обработчик Sypex Geo. Вообще менеджер перебирает все доступные настроенные обработчики, которые могут вернуть результат на нужном языке (второй аргумент в методе getDataResult ) и с нужными полями. Если найден подходящий обработчик и он вернул результат, то запросы к другим доступным обработчикам не делаются.
Нужные поля можно указать третьим аргументом в методе getDataResult , например:
В таком случае Sypex Geo не будет использован, т.к. в списке возвращаемых полей нет zipCode.
Стоит учесть, что максимальная длина cookie - 4096 байт, а в IE вроде как еще меньше. Поэтому неизвестно, насколько надежно держать в cookie сериализованный объект с геоинформацией. Уверен, что в Битриксе об этом не задумывались.
Геолокация в модуле sale
Как говорилось в начале, геолокация была анонсирована в обновлении модуля sale, поэтому геолокацию можно использовать для определения местоположения пользователя для оформления заказа. Для этого существует класс Bitrix\Sale\Location\GeoIp , который использует вышеописанный функционал для поиска местоположения в базе Битрикса.
Платформа 1C-Битрикс содержит встроенные обработчики геолокации, позволяющие определить местоположение пользователя. Это особенно необходимо для мультирегиональных проектов, когда перед вами стоит задача показывать пользователю различный контент(каталог, контакты, цены, контент) в зависимости от региона.
Чтобы включить определение местоположения «Битрикс» через функционал платформы необходимо:
-
Перейти на стартовую страницу сайта и после выбора режима правки открыть настройки компонента «Определение местоположения по IP-адресу»;
Чтобы задать настройки, необходимые для работы «Bitrix GeoIp», потребуется:
- Перейти в раздел: «Администрирование», далее выбрать «Настройки» и «Настройки продукта», а после «Геолокация»;
- Убедиться, что вы установили и активировали обработчик «Sypex Geo».
Когда компонент определения местоположения работает некорректно достаточно:
Где найти обработчиков геолокации
Все доступные обработчики находятся в «Настройках». После перехода в «Настройки продукта» необходимо кликнуть «Геолокация». В списке доступных обработчиков:
- Sypex Geo;
- MaxMind;
- Расширение GeoIP.
Первые два нуждаются в ключах для получения доступа к необходимым сервисам. Чтобы тестировать с минимальными финансовыми расходами, рекомендуется пройти регистрацию на Sypex Geo, так как именно здесь предоставляется в месяц 30 000 бесплатных запросов. Найти ключ можно в личном кабинете. Он также указывается в настройках обработчика.
Обработчиками геолокации выступают классы-наследники GeoIpBase. В коробке идут три следующих обработчика:
Свои добавляются при помощи события onMainGeoIpHandlersBuildList (модуль main):
В компаниях, у которых много сотрудников работают удаленно, может возникнуть необходимость контроля реального месторасположения своих работников. Действительно ли сотрудник находится в удаленном офисе, поехал на встречу с клиентом, или же он под предлогом командировки отправился совсем в другое место.
Также в условиях эпидемии коронавируса практически все компании перешли на удаленный режим работы и надо убедиться в том, что сотрудник работает из дома и не нарушает режим самоизоляции.
Мы разработали модуль позволяющий определить местоположение посетителей портала Битрикс24. Установить его можно в Маркетплейс Битрикс24.
В списке доступен функционал поиска и фильтрации. Координаты выводятся в виде ссылки на Яндекс карты, на которых отмечена точка с местоположением пользователя. Доступ к странице со списком координат сотрудников ограничен. Поэтому информацию смогут просмотреть только те люди, которым это разрешено настройками модуля. Например, сотрудники службы безопасности компании или руководители структурных подразделений.
Как работает определение местоположение сотрудника?
Для определения местоположения сотрудника, вошедшего на портал Битрикс24, используется API Яндекс карт. Оно позволяет определять местонахождения пользователя двумя способами: по информации из браузера, если пользователь разрешил сайту доступ к Геоданным, либо по ip адресу устройства.
Модуль с заданной в настройках периодичностью определяет местоположения посетителей на портале Битрикс24. Например, один раз в 2 часа.
Также возможно ограничить доступ к странице со списком сотрудников на которой показано их текущее местоположение. Таким образом доступ к информации смогут получить только те сотрудники, кому это действительно необходимо.
Также можно совсем отключить мониторинг, если в этом отпала необходимость.
Фамилия Имя сотрудника в виде ссылки на его профиль в Битрикс24
Внутренний телефон сотрудника
Координаты сотрудника в виде ссылки на точку на Яндекс Картах
Разрешил ли доступ сотрудник к геоданным своему браузеру.
Адрес, который определили Яндекс Карты
Источник данных по которому было определено местоположение (Браузер или IP адрес)
Координаты пользователя выведены в виде ссылки на страницу Яндекс Карт, при клике на которую вы увидите положение пользователя:
На странице доступен поиск и фильтрация по полям списка.
А также возможна настройка отображения колонок в списке:
Какие ограничения и точность обнаружения?
Как было сказано выше, API Яндекс карт, позволяет определять местоположение двумя способами по ip адресу или по браузеру.
Стоит отметить, что определение положения по ip адресу возможно с точностью только до города.
Точность определения положения по браузеру значительно выше, но также может довольно сильно уводить в сторону. Естественно, требуется, чтобы пользователь разрешил доступ к Геоданным для портала Битрикс24.
На практике, абонентов проводного Интернета сервис определяет с точностью до микрорайона города (разброс примерно 1,5 - 2 километра). Клиентов, которые используют мобильный интернет или публичные wifi сети, удается определить с точностью до дома.
Условия использования сервиса Яндекс Карт запрещают использование их API на Интранет порталах, поэтому, чтобы не нарушать условия, необходимо приобрести Стандартную лицензию. Однако, вы можете протестировать модуль (и работать какое-то время) без покупки лицензии. Для этого нужен аккаунт Яндекса.
Функционал модуля доступен только в коробочной версии Битрикс24.
Плюсы и минусы решения.
К плюсам данного решения можно отнести, то, что оно не требует покупки никакого дополнительного оборудования, установки дополнительного ПО на устройства пользователей. Требуется лишь установить модуль на портал Битрикс24, подобрать необходимый тариф (тут не хватает запятой или даже точки) получить ключ для приложения, использующего API Яндекс Карт, указать желаемый интервал синхронизации местоположений пользователей и внести его в настройки модуля. Что позволяет быстро начать пользоваться системой. Функционал доступен в рамках привычного пользователям интерфейса Битрикс24, поэтому не потребуется тратить время на обучение сотрудников. Также не требуется обязательное наличие GPS ГЛОНАСС на устройстве пользователя.
К недостаткам решения можно отнести необходимость покупки лицензии у Яндекс, а также, в некоторых случаях, недостаточную точность определения положения. Все таки это не специализированная система мониторинга за объектами.
Цена модуля
Стоимость модуля составляет 20 000 руб.
Модуль доступен для установки в Маркетплейс Битрикс24.
Если заключим договор о продлении лицензии Битрикс24 через нас, сделаем дополнительную скидку.
Вместо вывода
Данный модуль позволяет быстро и без больших затрат развернуть легкую систему мониторинга за пользователями, которые работают на портале, что позволит решить те или иные бизнес-задачи.
Также мы планируем дорабатывать модуль:
Создать страницу, на которой будут выводиться отчеты об изменении местоположения пользователя в разрезе времени;
Отправлять отчеты на электронную почту руководителям;
Добавить оповещения. Например об изменении привычного места работы пользователя;
Выводить дополнительные поля на страницу со списком местоположений сотрудников;
Добавить настройки, которые позволят отслеживать положение только определенных групп или отделов компании;
Определять положения при каких либо действиях/событиях на портале. Например при начале выполнения задачи в Битрикс24.
Создать карту на которую в онлайн режиме будут отображены все сотрудники. Это позволит наглядно показать географию присутствия компании.
А какая доработка нужна вам? Чтобы получить данный модуль или уточнить возможность его доработки под вас, заполните форму ниже.
Загрузка местоположений в систему, а также очистка существующих выполняется на странице Магазин > Настройки > Местоположения > Импорт местоположений .
На закладке Импорт местоположений осуществляется импорт местоположений в систему в соответствии с заданными параметрами:
-
Источник местоположений - выбирается источник загрузки местоположений: с удаленного сервера или из файла.
При загрузке местоположений с сервера необходимо отметить нужные вам страны, области и/или регионы для загрузки.
Примечание: для местоположений 2.0 на сервере хранится отдельная обновленная база, отличная от базы местоположений старой схемы. Курс Магазин до конвертации (до версии 15.0).
Подробнее. Причем серьезно расширена база для России (местоположения можно загружать вплоть до улиц).
При загрузке местоположений из файла следует с помощью кнопки Добавить файл указать файл с данными, а также заранее вручную создать необходимые типы местоположений Создадим, например, тип местоположения Улица. В форме создания (редактирования) типа обязательно указываем символьный код, названия для всех языков интерфейса и задаем индекс сортировки для определения положения нового типа в списке:
Подробнее. и внешние сервисы. Управление внешними сервисами, необходимыми для работы с кодами местоположений, осуществляется на странице Магазин > Настройки > Местоположения > Внешние сервисы .
Обратите внимание! В этом случае местоположения будут удалены, даже если они фигурируют в адресах существующих заказов.
Запуск процесса импорта осуществляется по кнопке Начать импорт.
Важно! Загрузка местоположений - это достаточно длительный процесс, который в зависимости от количества загружаемых данных и мощности вашего хостинга может занять от нескольких минут до нескольких часов. Поэтому импорт данных рекомендуется выполнять в период минимальной нагрузки на сервер.
На закладке Очистить список местоположений выполняется очистка всех имеющихся в системе местоположений:
Важно! Не рекомендуется очищать местоположения на рабочем проекте. Будут удалены все местоположения, даже если они фигурируют в адресах существующих заказов Местоположения также будут удалены и в заказах, что вызовет некорректную работу, например, служб доставки. .
Для получения сведений о местоположении клиента по его IP-адресу используется сервисы геолокации. В системе Битрикс, начиная с версии 17.0.13 доступны классы для работы с сервисами геолокации. Кроме того, в администраторской части сайта есть раздел, где вы можете настраивать список обработчиков геолокации:
Настройки – Настройки продукта – Геолокация
По умолчанию в системе доступны три обработчика геолокации, первый – системный, функционирующий на самом веб-сервере, в виде расширения GeoIP, остальные два установлены в битрикс, это MaxMind и Sypex Geo.
Чтобы использовать расширение, установленное на сервере, нужно убедиться в том, что библиотека с GeoIP имеет версию начиная от 1.4.0.
Что касается сервиса MaxMind, то перед его использованием вам потребуется на сайте компании получить ID пользователя, а также лицензионный ключ, посредством которого вы сможете в дальнейшем сможете пользоваться их услугами.
В этом плане сервис Sypex Geo позволяет без регистрации выполнять до 10000 запросов, если же количество запросов будет превышать данный порог, по для него так же потребуется получения ключа лицензии.
API для геолокации
Как уже говорилось что в поздних версиях битрикса появилась поддержка работы с GeoIP. В связи с этим в системе появилось множество методов для работы с данными геолокации. Классы в пространстве имён имеют вид: \Bitrix\Main\Service\GeoIp.
Для удобства использования, мы сделаем сокращение:
Получение фактического IP адреса
Далее посмотрим простые базовые методы использования. Давайте определим фактический IP-адрес пользователя, для этого используем следующий код:
Получение информации о местоположении
Зная фактический IP адрес, далее мы можем получить информацию об этом узле:
В качестве результата в переменной $realIP будет находится объект, с данными геолокации. Зная IP адрес, мы так же можем получать отдельные поля.
Использование данных геолокации в модуле sale
Возможности использования данных геолокации были анонсированы параллельно с обновлением модуля sale. В связи с этим появилась возможность определения местоположения пользователя при оформлении заказа, используя методы модуля. Для этих целей так же есть класс: Bitrix\Sale\Location\GeoIp.
Данный класс так же реализует вышеописанный функционал, и позволяет выполнять поиск данных о местоположении в базе Битрикса. Вот несколько примеров использования методов:
Местоположения в базе данных находятся по названию, и не регистрозависимы.
Установка расширения GeoIP на сервер
Как уже говорилось выше данные о местоположении могут браться и с самого сервера, на котором расположен сайт. Для этого на сервере должно быть установлено расширение GeoIP. С большой вероятностью ваш сайт функционирует на UNIX-системе. Если у вас есть доступ к консоли сервере, то вы можете установить расширение на свой север посредством команд:
Читайте также: