Описание сервисных периодов Webim
В этой статье описаны периоды сервиса Webim, которые отвечают за обновление статусов операторов и посетителей, состояний диалогов, кэшированных данных; отправку Email-сообщений, сохранение файлов в БД, отправку запросов и т.д. Часть периодов можно настраивать (наиболее используемые периоды вынесены в account config), другие же являются константами и могут быть изменены только путём доработки в версиях Webim для размещения на собственных мощностях клиента (hosted-клиенты).
Настраиваемые сервисные периоды Webim
Размещённые в account config
Значения для периодов указываются в секундах.
N.B.
Для smart_polling_period_settings
параметры указываются в формате JSON
.
Название периода | Описание | Значение по умолчанию |
---|---|---|
normal_polling_period |
Webim может принимать/отвечать на запросы от фронтендов операторской и посетительской части в двух режимах: посредством обычного http, но с использованием long polling, или с использованием протокола WebSocket. В первом случае, сервер отвечает на запрос от клиента не сразу, а либо по прошествии определённого времени (нет сообщений), либо сразу, как только для клиента приходит сообщение (ответ приходит в виде сообщения для клиента). Во втором случае, клиент и сервер устанавливают двунаправленное TCP-соединение и сервер сам отправляет клиенту сообщения по мере их поступления. В Webim для выбора режима обмена запросами существуют специальные параметры account config - operator_websockets и visitor_websockets . Период normal_polling_period регулирует время, после которого клиент в любом случае получит ответ от сервера. Как только клиент получает ответ от сервера, он сразу же делает новый запрос к нему и цикл повторяется вновь. |
10 секунд. |
in_chat_polling_period |
Данный период регулирует время, по истечении которого сервер гарантировано даёт ответ клиенту (даже если нет данных) при активном диалоге. | 2 секунды. |
smart_polling_period_settings |
При включенном параметре smart_polling_period_logic время ответа сервера на запросы определяется автоматически (в зависимости от времени, прошедшего с момента последнего совершённого действия):
[{"int":10,"hot":1,"cold":2},{"int":30,"hot":2,"cold":5},{"int":120,"hot":5,"cold":10}] В данном примере на интервале от 0 до 10 секунд с момента последнего совершённого действия поллинг-периоды в активном и неактивном состоянии имеют значения 1 и 2; на интервале от 10 до 30 секунд поллинг-периоды имеют значения соответственно 2 и 5; на интервале от 30 до 120 секунд поллинг-периоды имеют значения 5 и 10. |
Нет |
statistics_min_period |
Минимальный разрешаемый период в статистике. | 3600 секунд. |
previous_chats_label_time_interval |
Период устанавливает минимальное время, за которое у посетителя проверяется наличие предыдущих диалогов с оператором. | Нет |
dashboard_realtime_update_interval |
Отвечает за обновление метрик, использующих real-time интервал обновления. Подробнее об этом здесь. | 10 секунд. |
dashboard_prev_periods_update_interval |
Отвечает за обновление метрик, использующих не real-time интервал обновления. Подробнее об этом здесь. | 10 секунд. |
Размещённые в других конфигурационных файлах
Данные периоды имеют плавающие значения, определяемые специальной функцией. Изменение значения периодов достигается путём переопределения специальной функции.
Название периода | Описание | Значение по умолчанию |
---|---|---|
cached data autoupdate |
Период для обновления кэшированных данных из chat_backend . В chat_backend кэшируются отделы, настройки размещения, настройки аккаунта и др. Для каждого класса можно настроить индивидуальный период обновления. |
По умолчанию является плавающим периодом со значением от 0 до 300 секунд. |
MultiCache %s autoupdate |
Также обновляет кэшированные данные. Только в отличие от cached data autoupdate хранит не сам объект, а словарь с множеством кэшированных объектов. Используется для кэширования операторов. |
По умолчанию является плавающим периодом со значением от 0 до 300 секунд. |
node_ping |
Отправляет "эхо-запросы" на ноды через RabbitMQ, тем самым проверяя, живые они или нет. Используется только совместно с масштабированием. | По умолчанию является плавающим периодом со значением от 0 до 300 секунд. |
Константные сервисные периоды Webim
Название | Описание | Установленное значение |
---|---|---|
delta cleaning |
Удаляет старые значения дельт. Значения удаляются как для операторской части, так и для части посетителей. Удалённые значения дельт не будут доставлены оператору или посетителю, и, соответственно, РМО/виджет не будет обновлён данными из этих значений дельт. | 5 секунд. |
clean_operators_chat_history |
Удаляет часть старых сообщений в операторском чате (в РМО вкладка "Операторы"), которая превысила лимит (по умолчанию 500 сообщений, можно изменить). | 3600 секунд. |
Visitor channels status updater |
Проверяет все чаты, которые пришли из каналов общения (VK, Viber, Whatsapp и др.) и не закрыты окончательно (то есть, не в состоянии CLOSED ). У таких чатов проверяется, находится ли посетитель в статусе онлайн и обновляет его. В каждом канале может быть определён способ получения статуса онлайн, в соответствии с API этого канала. Так у VK и Viber есть свои способы получения статуса онлайн, а во всех остальных каналах (где нет такой возможности) возвращается True , считая посетителя онлайн всегда. |
600 секунд. |
unassign_chats_from_offline_operators |
Работает только если задано значение в account config chat_unassign_from_offline_operators_timeout . Проверяет все диалоги в состоянии QUEUE и CHATTING и снимает чат с оператора если сошлись несколько условий:
|
30 секунд. |
Expired chats closer |
Проверяет все незакрытые чаты (не в состоянии CLOSED ) и закрывает их. Условия проверки:
|
30 секунд. |
chat_pinger |
Проверяет все незакрытые (не в состоянии CLOSED )чаты и проверяет, занят ли оператор. Условия проверки:
|
5 секунд. |
check_chat_unread_by_visitor_for_too_long |
Проверяет все чаты и, если прошло времени больше значения, определённого в настройке account config unread_chat_sending_to_visitor_by_email_timeout , отправляет непрочитанные сообщения посетителю на Email. |
30 секунд. |
send_contact_request_for_queued_too_long |
Работает только если включена настройка account config auto_contact_request_for_waiting_too_long . Проверяет все чаты, находящиеся в состоянии QUEUE , и если указано значение в настройке account config contact_request_for_queue_timeout , то по прошествии этого таймаута посетителю отправляется сообщение с требованием заполнить контактные данные. |
30 секунд. |
check_routing_chats |
Проверяет все чаты в состоянии ROUTING и если чат находится в нём слишком долго, то переводит его в состояние QUEUE . |
10 секунд. |
try_auto_assign_chats_in_queue__ |
Если настройка account config auto_assign включена, то выполняет логику, связанную с автоназначением чатов на операторов. Выбор логики зависит от значения настройки account config operator_department_prioritization . Если true - распределяет с учётом приоритетов отделов, а если false - простое распределение по операторам (с учётом их приоритетов).Подробнее о автоназначении - здесь. |
1 секунда. |
check_if_operators_needs_to_be_disconnected_for_all |
Проверяет все аккаунты операторов и берёт состояние online для отдела "Без отдела". Если состояние оператора равно online или busy_online , то переводит операторов в статус invisible (если оператор онлайн в нерабочие часы) или отключает операторов (если они были удалены или аккаунт заблокирован). |
60 секунд. |
Deleting old broadcast links from broadcast_visitor table |
Удаляет старые привязки посетителей к рассылкам. | 24 часа. |
BackgroundStorager |
Проверяет все storage-классы и сохраняет объекты в базе данных. | 5 секунд. |
BackgroundStorager - retrying store failed |
Аналогично предыдущему, но для объектов, которые не удалось сохранить (falied). | 600 секунд. |
clean_old_closed_chats |
Проверяет все сессии, у которых есть закрытые чаты и отвязывает эти чаты от сессий. В настройке account config shown_closed_chats_limit можно установить лимит по количеству сессий, для которых нужно отвязывать чаты. |
30 секунд. |
old sessions cleaning |
Проверяет все аккаунты и удаляет на каждом из них "мёртвые" сессии и давно не обновлявшиеся сессии, и связанные с этими сессиями устройства посетителей. | 24 часа. |
hide_chats_if_necessary |
Проверяет все аккаунты и делает в каждом из них видимыми/невидимыми чаты в РМО, которые находятся в очереди. Скрываются только те чаты, которые превысили лимит (устанавливается в account config ):
|
60 секунд. |
ip_to_chat_start_ts_list cleaning |
Проверяет все аккаунты и удаляет временные метки (timestamp) старых попыток посетителя начать чат. Лимит на создание чатов за час устанавливается в настройке account config chats_count_per_ip_limit . Попытки привязаны к IP-адресу. При достижении лимита, посетитель не сможет создавать чаты некоторое время, пока не удалятся самые старые попытки и общее число попыток понизится ниже лимита. |
3600 секунд. |
recheck_all_session_subset |
Добавляет регулярную перепроверку включения сессий посетителей в именованные подмножества с логированием, если встречаются расхождения. | 60 секунд. |
operator online periods updating |
Проверяет всех работающих операторов (все, кто не OFFLINE ) и обновляет данные онлайн-периодов: отдел / язык / статус / timestamp и др. |
600 секунд. |