Skip to end of metadata
Go to start of metadata

Реализация

Клиентская часть

В клиентской части, приёмом сообщений занимается AMessageChecker, в скрипте messageChecker.js.

Этот объект через заданный интервал (по умолчанию, 30 секунд) отправляет запрос на функцию form_events.

Результат запроса - JSON массив объектов

При возврате массива ненулевой длины, происходит обработка уведомлений.
На данный момент, поддерживаются типы:

  1. Сообщение («TYPE» : «MESSAGE»)

  2. Уведомление («TYPE» : «EVENT»)

  3. Объект карты («TYPE» : «MAP_EVENT») ( включается только на вкладке с картой ).  Формат события

Формат уведомлений

В зависимости от типа, уведомление имеет следующий вид:

== Message ==

{ 
  "TYPE" : "MESSAGE",
  "TITLE" : "Message Title",
  "TEXT"  : "This is sample message text",
  "MESSAGE_ID" : 23,
  "EXTRA" : "https://demo.abills.net.ua:9443/admin/index.cgi",
  "SENDER" : { "UID" : 2, "LOGIN" : "testuser" }
}

Все параметры, кроме TYPE, TITLE и TEXT являются опциональными. 

Значение поля TEXT обрезается до 30 символов.

Параметр MESSAGE_ID служит для создания ссылки для быстрого перехода к сообщению в Msgs.
Параметр EXTRA - ссылка, которая будет отображена с тестом «TITLE».
Объект CLIENT отвечает за дополнительную отображаемую информацию о клиенте, к которому относится сообщение.

Серверная часть

Функция form_events через функцию cross_modules_call, вызывает в каждом модуле функцию с именем $Module_events, и возвращает хеш результатов. При вызове из портала абонента, одним из аргументов передаётся CLIENT_INTERFACE ⇒ 1.

Функция $Module_events должна передавать JSON строку вида:

{ 
  "TYPE" : "MESSAGE",
  "TITLE" : "Message Title",
  "TEXT"  : "This is sample message text",
  "MESSAGE_ID" : 23,
  "EXTRA" : "https://demo.abills.net.ua:9443/admin/index.cgi",
  "CLIENT" : { "UID" : 2, "LOGIN" : "testuser" }
},
{ 
  "TYPE" : "MESSAGE",
  "TITLE" : "Message Title",
  "TEXT"  : "This is sample message text for another message",
  "MESSAGE_ID" : 25,
  "EXTRA" : "https://demo.abills.net.ua:9443/admin/index.cgi",
  "CLIENT" : { "UID" : 8, "LOGIN" : "client" }
}

Группировка уведомлений

События группируются по модулям.
Управление группами
Администратор может подписаться на группы событий в меню Профиль.
Отписаться от группы можно или в меню, или нажав на иконку перечеркнутого глаза в заголовке уведомления.
Для некоторых модулей, можно поменять статус уведомления на «Прочитано», кликнув на иконку галочки в заголовке уведомления. 

  • No labels