При работе со списком сообщений необходимо следовать следующим практикам: при ПЕРВОМ открытии ленты событий следует загрузить список из 30 последних добавленных событий (см. описание ниже).
{
UserKey: "a323b007-5f4a-4038-a82b-3d1cab56dbe2",
ApiKey:"",
ApiVersion: "100",
Method: "EventTape.GetMessages",
Parameters:
{
EventTapeType: 0,
BaseObjectId: 144921,
BaseObjectType: 4,
PageSize:30,
EventTypesFilter:[0]
}
}
В результирующем списке события отсортированы по убыванию даты добавления (на верху самые поздние события).
После завершения инициализации ленты событий следует выполнять запросы к серверу в соответствии с описанием ниже.
{
UserKey: "a323b007-5f4a-4038-a82b-3d1cab56dbe2",
ApiKey:"",
ApiVersion: "100",
Method: "EventTape.GetMessages",
Parameters:
{
EventTapeType: 0,
BaseObjectId: 144921,
BaseObjectType: 4,
PageSize:30,
LastEventId: 2222,
SeekDirection:1,
EventTypesFilter:[0]
}
}
Обратите внимание, что для получения более ранних сообщений следует проинициализировать параметр LastEventId, в который должен быть записан код самого раннего УЖЕ ЗАГРУЖЕННОГО в ленту события. В результате будет возвращено 30 элементов, коды которых меньше кода сообщения в LastEventId. Также необходимо параметр SeekDirection установить в значение 1, которое будет сообщать системе что искать нужно более ранние сообщения относительно переданного LastEventId.
Метод листания ленты “вниз” следует выполнять только при прокрутке пользователем ленты “вниз” в ручном режиме.
{
UserKey: "a323b007-5f4a-4038-a82b-3d1cab56dbe2",
ApiKey:"",
ApiVersion: "100",
Method: "EventTape.GetMessages",
Parameters:
{
EventTapeType: 0,
BaseObjectId: 144921,
BaseObjectType: 4,
LastEventId:305154,
SeekDirection:0,
PageSize:null,
EventTypesFilter:[0]
}
}
Для получения более ПОЗДНИХ сообщений относительно текущих загруженных сообщений необходимо проинициализировать параметр LastEventId кодом самого ПОЗДНЕГО загруженного сообщения. При этом SeekDirection необходимо установить в 0 (искать более поздние сообщения), а параметр PageSize установить в NULL, чтобы вернулись ВСЕ без исключения новые записи.
Метод подгрузки новых сообщений следует выполнять не чаще чем 1 раз в 60 секунд.
<aside> 💡 ОЧЕНЬ ОЧЕНЬ ВАЖНО! вызывать метод “догрузки” сообщений в ленту необходимо ТОЛЬКО для объекта, чья лента открыта в настоящий момент и в оконном менеджере данный объект является текущим. Если лента событий в объекте в настоящий момент скрыта, то подгрузка сообщений НЕ осуществляется. Если в оконном менеджере есть объекты с открытой лентой событий, но они не являются выделенными, то подгрузка сообщений для данных объектов НЕ осуществляется.
</aside>
Ленту событий можно фильтровать по типам сообщений. Для фильтрации используется массив EventTypesFilter, значениями которого могут быть числовые представления перечисления AggregatedEventType (см. ниже). Например EventTypesFilter:[0, 2] будут отфильтрованы только сообщения пользователя и системные предупреждения.
public enum AggregatedEventType
{
//сообщения пользователя (записи добавленные сотрудником)
Message = 0,
//обратная связь (звонки, смс и т.д.) связанные с объектом
Call = 1,
//системные предупреждения связанные с объектом
Warning = 2,
//уведомления об изменении объекта
Change = 3
}