Legan Studio
Все статьи
~ 6 мин чтения

Геолокация в Telegram-боте: доставка, ближайший офис и зоны обслуживания

Как использовать геолокацию в Telegram-боте: принимать адрес доставки, показывать ближайший офис и ограничивать зону работы бизнеса.

  • Telegram
  • геолокация
  • доставка

Telegram позволяет пользователям отправлять геолокацию одним нажатием — и бот может использовать эти данные для десятков практических сценариев. Найти ближайший офис, рассчитать зону доставки, показать точки на карте, ограничить работу только для своего города — всё это реализуется без разработки отдельного приложения.

Геолокация в боте — это не просто удобная фича. Для бизнесов с географической привязкой (доставка, розница, выездные услуги) это критическая часть воронки продаж.

Как работает геолокация в Telegram Bot API

Telegram поддерживает два способа передачи местоположения.

Разовая геолокация. Пользователь нажимает кнопку «Отправить местоположение» (Telegram показывает стандартный системный диалог с запросом разрешения), выбирает текущую позицию или точку на карте и отправляет её. Бот получает объект с координатами (широта, долгота).

Живая геолокация. Telegram позволяет отправлять обновляемое местоположение в реальном времени на заданный период (5-60 минут). Полезно для трекинга курьеров или транспорта в реальном времени.

Точность зависит от устройства: GPS на улице даёт погрешность 3-10 метров, Wi-Fi-позиционирование в помещении — 20-50 метров. Для большинства бизнес-сценариев этого достаточно.

Сценарий 1: Доставка с расчётом зоны и цены

Для бизнесов с доставкой (еда, цветы, товары, курьерские услуги) геолокация решает сразу три задачи.

Подтверждение зоны обслуживания. Клиент отправляет геолокацию — бот проверяет, входит ли адрес в зону доставки. Если нет — честно сообщает и предлагает альтернативу (самовывоз, другой город). Это лучше, чем принять заказ и потом отменить.

Автоматический расчёт стоимости. Зная расстояние от склада до клиента, бот рассчитывает стоимость доставки. Простая тарификация: зона 1 (до 5 км) — 200 рублей, зона 2 (5-10 км) — 350 рублей. Сложная — интеграция с картографическим API для расчёта реального маршрута.

Уточнение адреса. После геолокации бот предлагает подтвердить адрес текстом («Пушкина 15, кв. 34, 3 этаж») и сохраняет его для следующего заказа. Повторный клиент тратит на оформление 30 секунд вместо 3 минут.

Пример диалога:

— Нажмите «Поделиться геолокацией», чтобы проверить зону доставки. — [Клиент отправляет геолокацию] — Отлично! Вы находитесь в зоне доставки. Стоимость: 250 рублей, время: 40-60 минут. Уточните полный адрес (квартира, этаж, код домофона).

Сценарий 2: Ближайший офис или пункт выдачи

Для розничных сетей, медицинских центров, банков, аптек, пунктов выдачи — показать ближайшую точку быстро и понятно.

Бот запрашивает геолокацию, находит в базе данных ближайшие точки (обычно 3-5 штук), показывает их с расстоянием, режимом работы и ссылкой на Яндекс.Карты для построения маршрута.

Данные по каждой точкеИсточник
Название и адресБаза данных бота
РасстояниеРасчёт по координатам (формула Хаверсина)
Режим работыБаза данных, обновляется вручную
ТелефонБаза данных
Ссылка на картуЯндекс.Карты или 2GIS (deeplink)
Загруженность (опционально)Интеграция с внутренней системой

Ссылка на карту формируется автоматически: https://yandex.ru/maps/?pt=37.617,55.755&z=16 — клиент нажимает и видит точку на карте с маршрутом от своего текущего местоположения.

Сценарий 3: Показ точек на карте

Telegram позволяет отправлять в чат статические метки на карте (venue). Это не интерактивная карта, но достаточно для большинства случаев.

Бот отправляет несколько меток последовательно: каждая — это адрес с названием, который кликается и открывается в Яндекс.Картах. Для небольшой сети из 5-10 точек это работает отлично.

Для больших сетей (50+ точек) лучше показывать только 3-5 ближайших, а не все сразу — информационная перегрузка снижает конверсию.

Сценарий 4: Ограничение географии работы

Некоторые бизнесы работают только в определённом городе или регионе. Геолокация позволяет это проверять автоматически.

Клиент начинает оформление заказа → бот запрашивает геолокацию → если клиент за пределами зоны обслуживания → вежливый отказ с объяснением. Не надо, чтобы менеджер тратил время на обработку нерелевантных заявок.

Это особенно актуально для:

  • Доставки собственными курьерами (без аутсорса)
  • Выездных услуг (замер, установка, ремонт)
  • Специальных тарифов для конкретного региона

UX-нюансы: что делать, если пользователь отказал в доступе

Часть пользователей не готова делиться геолокацией — из соображений приватности или по привычке. Это нужно обрабатывать корректно.

Не делайте геолокацию обязательной там, где можно обойтись. Если клиент может ввести адрес текстом — дайте такую возможность. «Поделитесь геолокацией для автозаполнения адреса, или введите адрес вручную».

Объясняйте, зачем нужна геолокация. «Нам нужны ваши координаты, чтобы рассчитать стоимость и время доставки» — понятная причина. Без объяснения отказов больше.

Предложите альтернативу. Если клиент отказал — переключитесь на текстовый ввод адреса. Не «тупик», а другой путь к той же цели.

Не запрашивайте геолокацию повторно в той же сессии. Если отказал — принял решение. Повторный запрос воспринимается как давление.

Алгоритм обработки ситуации с отказом:

  1. Клиент не поделился геолокацией
  2. Бот: «Понятно! Тогда введите ваш адрес в формате: город, улица, дом»
  3. Клиент вводит адрес текстом
  4. Бот проверяет по базе зон обслуживания и продолжает

Интеграция с Яндекс.Картами и 2GIS

Оба сервиса предоставляют API для обратного геокодирования (координаты → адрес) и прямого геокодирования (адрес → координаты).

Обратный геокодинг используется, когда клиент отправил геолокацию: бот запрашивает Яндекс.Карты и получает красивый читаемый адрес («Москва, ул. Пушкина, 15»), который показывает клиенту для подтверждения.

Прямой геокодинг используется, когда клиент ввёл адрес текстом: бот преобразует текст в координаты и может проверить зону доставки или найти ближайший офис.

Яндекс.Карты API: бесплатно до 1 000 запросов в день, дальше 1.20 рублей за запрос. Для большинства малых бизнесов бесплатного лимита хватает. 2GIS API: аналогичные условия, часто точнее для малых городов России.

ПараметрЯндекс.Карты2GIS
Бесплатный лимит/день1 000 запросов25 000 запросов
Точность в Москве/СПбВысокаяВысокая
Точность в малых городахСредняяВысокая
Актуальность данныхХорошаяОтличная (собственная база)
Стоимость сверх лимита1.20 руб/запрос0.50 руб/запрос

Для большинства российских бизнесов 2GIS предпочтительнее благодаря точности данных по малым городам и более щедрому бесплатному тарифу.

Безопасность и приватность

Геолокация — персональные данные по 152-ФЗ. Несколько обязательных требований:

  • Получить явное согласие на обработку ПДн (обычно при первом запуске бота).
  • Не хранить геолокацию дольше, чем необходимо для выполнения конкретного заказа.
  • Не передавать геолокацию третьим лицам без согласия пользователя.
  • Указать в политике конфиденциальности, что собираете геолокацию и зачем.

Реализовать это несложно: бот хранит координаты только в рамках активной сессии или конкретного заказа. После завершения — только текстовый адрес, координаты удаляются.

Геолокация в боте — это не экзотика. Это стандартная функциональность, которую пользователи ожидают от любого сервиса с территориальной привязкой. Реализуется за 1-2 недели разработки и сразу снижает трение при оформлении заказа.