Технический разбор · amoCRM и Kommo

Как работает RegionTime

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

Блок «Местное время» в карточке CRM: циферблаты клиента и менеджера, сутки полосой и легенда рабочих часов

Что делает виджет

RegionTime берёт номер телефона из карточки и отвечает на один вопрос: который сейчас час у этого человека и рабочее ли у него время. Ответ появляется над номером, в отдельном блоке карточки и при постановке задачи.

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

Кому подойдёт: отделам, которые звонят за пределы своего часового пояса — по России, по СНГ или за границу; командам, у которых рассылки и боты уходят по расписанию аккаунта, а не клиента.

Как номер превращается в часовой пояс

Виджет разбирает номер по кодам, а не по стране целиком.

  • Россия. Реестр Россвязи: коды DEF (мобильные 9xx) и ABC (городские 3xx, 4xx, 8xx) разложены по субъектам федерации, субъекты — по часовым поясам. Поэтому 423 — это Владивосток, а не «среднее по России».
  • Остальные страны. План нумерации из открытых данных Google libphonenumber плюс база часовых поясов IANA. Для стран с несколькими поясами — США, Бразилия, Австралия, Мексика, Казахстан — работает та же логика: пояс берётся от кода региона.
  • Если код ничего не даёт. У мобильных номеров многих стран региона нет в принципе. Тогда виджет показывает страну и помечает ответ приблизительным — курсивом и пунктирной рамкой. Это не отказ, а честная точность.
Про свежесть данных. Снимок реестра Россвязи, на котором работает виджет, датирован июлем 2019 года. Сам реестр сейчас недоступен для машинного скачивания. Коды, выданные позже, определяются как приблизительные — они не пропадают, но региона у них не будет.

Перевод часов

Виджет хранит имена часовых поясовAsia/Vladivostok, Europe/Madrid — а не готовое смещение в часах. Смещение вычисляется каждый раз на нужную дату.

Разница видна там, где её обычно и упускают: задача, поставленная в октябре на ноябрь, считается по ноябрьскому времени, а не по сегодняшнему. Половина Европы и Америки в конце октября уезжает на час — виджет об этом знает.

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


Как считается рабочее и нерабочее

Состояние — это не только «попал ли час в окно». Виджет различает четыре положения и красит время соответственно.

  • Рабочее время — зелёный. Час внутри окна, день не выходной и не праздник.
  • День заканчивается — жёлтый. Последние 30 минут окна: звонить ещё можно, но обсуждать долгое — уже нет.
  • Нерабочее время — коралловый, со значком луны.
  • Выходной или праздник — тоже коралловый, но значок другой, чтобы было видно причину.

Окно по умолчанию 10:00–19:00 и меняется в настройках. Оно применяется к местному времени клиента, а не к вашему.


Праздники и выходные

Выходные

Суббота и воскресенье — не универсальное правило. В Саудовской Аравии, ОАЭ, Израиле и ряде других стран выходные приходятся на другие дни, и виджет берёт их из данных по стране, а не из своей привычки.

Праздники

Календарь собирается из правил, а не из списка дат на конкретный год: фиксированные даты, Пасха и православная Пасха с их подвижными производными, конструкции вида «третий понедельник января». Поэтому таблица не устаревает в новогоднюю ночь.

Чего мы не знаем. Для стран с лунным календарём — Турция, Казахстан, Индонезия — таблиц праздников у нас пока нет. Виджет в этом случае сообщает, что календарь неизвестен, вместо того чтобы показать праздничный день рабочим. Тихо ошибиться здесь хуже, чем признать пробел.

Ручная правка и почему она сильнее

Номер не всегда совпадает с местом: люди переезжают, возят SIM с собой, оформляют номер на другой регион. Для таких случаев часовой пояс правится руками.

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


Поля в карточке CRM

Виджет заводит собственную группу полей — «Регион» — и кладёт в неё только своё:

  • RTZ_TIMEZONE — часовой пояс в формате IANA;
  • RTZ_REGION — регион или город;
  • RTZ_COUNTRY — страна;
  • RTZ_WORKING — рабочее или нерабочее время у клиента (тариф PRO).

Где создавать поля — в сделке, контакте, компании — выбирается по отдельности, и можно не создавать вовсе. Ваши поля, статусы, теги и примечания виджет не трогает.

Чего в полях больше нет. Раньше виджет писал ещё местное время и смещение UTC. Оба поля убраны намеренно: часы в поле верны минуту, а потом тихо врут, а смещение «UTC+2» становится неправдой при первом же переводе часов — и никто этого не замечает, потому что число выглядит правдоподобно. Живой ответ даёт пилюля в карточке, а для автоматики есть флаг рабочего времени.

Флаг рабочего времени: как он остаётся актуальным

Поле «Рабочее время у клиента» — единственное, что нужно постоянно пересчитывать, и единственное, за что берётся плата.

Сервер не обходит базу по расписанию. Для каждой записи он заранее вычисляет момент следующего переключения — когда у этого клиента начнётся или закончится рабочий день — и просыпается только к нему. Записи, у которых момент настал, обновляются пачками: CRM принимает до 250 сущностей за один запрос.

Отсюда арифметика, из-за которой это вообще возможно. У каждого клиента переключение случается дважды в сутки. База в 100 000 контактов — это около 33 пакетных запросов в час при лимите в 7 запросов в секунду. Обход всей базы каждый час, как это выглядит на первый взгляд, был бы невозможен.


Где виджет рисует

  • Над номером телефона — время, регион и цвет состояния. Без рамки и фона: карточное поле и так обведено, а коробка внутри читалась бы как кнопка.
  • Блок в правой колонке — два циферблата, сутки полосой и конвертер: циферблат клиента можно потянуть и увидеть, во сколько это будет у вас.
  • В планировщике задач — время клиента для выбранного слота, до сохранения задачи.

Виджет следит за перерисовкой карточки и возвращает свои элементы на место, когда CRM обновляет разметку.


Что виджет делает с данными

  • Определение пояса происходит в браузере. Номер телефона для этого никуда не отправляется.
  • На сервере хранятся: идентификатор аккаунта, настройки, соответствие сущности и часового пояса, и цифры номера — они нужны, чтобы пересчитывать флаг рабочего времени без обращения к CRM.
  • Токены доступа хранятся в зашифрованном виде и обновляются заранее, за час до истечения. Если доступ отозван, виджет говорит об этом в центре уведомлений, а не молчит.
  • Часовые пояса сотрудников по умолчанию не собираются: часовой пояс — это приблизительные данные о местоположении человека, и включать их сбор нужно осознанно.
Про доступ из России. Кабинеты на .amocrm.ru обращаются к нашему серверу через российский узел — прямой канал к зарубежным адресам у части провайдеров работает нестабильно. Данные и логика от этого не меняются, меняется только маршрут.

Тарифы и требования

Что входит в базовый тариф

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

Что входит в PRO

Поле «Рабочее время у клиента», которое сервер держит актуальным, и пять видов циферблата. 1490 ₽ в месяц за аккаунт в amoCRM или $15 в Kommo, независимо от количества сотрудников.

Требование к CRM

Для того, что рисуется на экране, особый тариф CRM не нужен — работает на любом. Флаг рабочего времени обновляется по вебхукам, а они доступны не на всех тарифах amoCRM и Kommo. Если ваш их не поддерживает, остальное продолжит работать.


Установка

  1. 1Нажмите кнопку установки или найдите «RegionTime» в маркетплейсе Kommo или amoCRM.
  2. 2Авторизуйте виджет — предоставьте доступ к вашему кабинету.
  3. 3Откройте любую карточку с номером из другого региона. Время появится над номером сразу; настраивать ничего не нужно.

Другие виджеты

Все виджеты >

Продвинутые поля

Группировка полей, преобразование переключателей в удобные контролы, добавление единиц измерения.

Пересменка

Управление сменами менеджеров и автораспределение сделок. Равномерная нагрузка, статистика в реальном времени.

Массовое создание сделок

Массово создаёт сделки для обзвона из выбранных контактов. Задачи планируются в рабочее время.

Диагностика кабинета

Автоматический аудит здоровья CRM: воронки, сделки, задачи, активность — с рекомендациями ИИ.

Свяжитесь с нами

Остались вопросы по виджету?

Оставьте заявку — поможем с установкой, настройкой и подберём виджеты под ваш процесс в Kommo CRM.

или напишите
в мессенджеры
+1