Руководства

Виджет часов с местным временем в панели поддержки

Сотруднику поддержки, который решает, звонить ли клиенту прямо сейчас, полезно знать, который час на самом деле там, где находится клиент, а не в офисе.

Как узнать часовой пояс клиента

Если у вас уже есть адрес доставки или платёжный адрес, выполните его геокодирование один раз, чтобы получить координаты, а затем передайте их в /v1/timezone. Если у вас есть только IP-адрес с последнего визита, эндпоинт /v1/ip сразу возвращает поле timezone, без отдельного запроса.

GET /v1/timezone?lat=35.6762&lon=139.6503
{
  "status": "ok",
  "timezone": "Asia/Tokyo",
  "utc_offset": "+09:00",
  "abbreviation": "JST"
}

Когда нет ни адреса, ни IP

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

Отображение часов

Сохраните идентификатор часового пояса в карточке клиента и вычисляйте по нему текущее местное время при каждой отрисовке панели, а не храните фиксированное смещение, которое устареет при переходе на летнее или зимнее время. Поскольку на сайте нет клиентского JavaScript, выводите текущее местное время на сервере при загрузке страницы и обновляйте его при каждом запросе страницы, а не запускайте живой отсчёт в браузере.

Один запрос на клиента, а не на просмотр страницы

Идентификатор часового пояса для местоположения клиента не меняется изо дня в день, поэтому определите его один раз, когда адрес или IP впервые записывается, и сохраните идентификатор, а не вызывайте API при каждой загрузке панели. Так эта функция обходится в несколько запросов всего, а не в один запрос на каждый просмотр страницы, что важно, если команда поддержки открывает панель много раз в день.

Ошибка, которой стоит избегать

Если пересчитывать смещение для прошлого обращения в поддержку по сегодняшнему определению часового пояса, а не по метке времени самого обращения, около перехода на летнее или зимнее время может отобразиться неверный час. Если панели нужно показать, какое местное время было у клиента в момент подачи прошлого обращения, передайте метку времени этого обращения в параметре time, а не полагайтесь на текущее смещение.

Сколько это стоит

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

Поддержание данных в актуальном состоянии

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

Часы с местным временем рядом с обращением являются небольшим дополнением, которое избавляет сотрудника поддержки от подсчёта разницы во времени в уме перед каждым звонком. Запрос полностью описан в документации по определению часового пояса.