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

Этап 1 - получение исторический сообщений

Исторические сообщения - уже существующие, на момент открытия диалога. Загрузка исторических сообщений осуществляется постранично. При открытии загружается ТОЛЬКО 1 страница, содержащая несколько последних сообщения (до 50-ти). В результате возвращается список отсортированный по дате поступления сообщения по убыванию (DESC - самые новые сообщения будут вначале списка). Визуально вывод сообщений осуществляется снизу вверх (внизу самые новые сообщения). При этом когда пользователь “долистывает” до самых ранних сообщений вверх, то необходимо запросить следующую страницу со списком сообщений и подгрузить их в визуальную компоненту.

{
	ApiKey: "",
	ApiVersion: "100",
	UserKey:"511cb3e4-4f45-4b93-b539-d96af95089cd",
	Method: "Dialogs.GetMessagesForClient",
	Parameters:  
	{
		"ChannelId": "014e3e30-18e3-4bce-8c93-0b418abcb70f",
		"DialogClientId": 144464,
		PageSize:20,
		PageNumber:1
	}
}

Этап 2 - получение текущих сообщений

Текущими считаем сообщения, полученные или отправленные уже после открытия формы просмотра диалога пользователем.

{
	ApiKey: "",
	ApiVersion: "100",
	UserKey:"511cb3e4-4f45-4b93-b539-d96af95089cd",
	Method: "Dialogs.GetMessagesForDialog",
	Parameters:  
	{
		//код диалога, для которого получаем сообщения
		"DialogId":16,
		//флаг что выбранные по запросу сообщения необходимо пометить 
		//"как прочитанные" текущим пользователем
		"MarkAsRead":true,
		//получить сообщения, поступившие после сообщения с указанным кодом 
		"MessagesAfterId":83
	}
}

<aside> 💡 ОЧЕНЬ ОЧЕНЬ ВАЖНО! флаг необходимо ставить в TRUE только при Dialog.EmployeeId == profile.CurrentUserId, т.е. когда текущий диалог открыт пользователем, который является его владельцем.

</aside>

<aside> 💡 для параметра MessagesAfterId необходимо использовать код последнего полученного сообщения в клиентском приложении

</aside>

Рекомендуется вызывать метод не чаще чем раз в 5 секунд

Если в результате выполнения метода вернулась пустая коллекция, то значит новых сообщений получено не было.

<aside> 💡 ОЧЕНЬ ВАЖНО! После отправки нового сообщения методом Dialog.SendMessage рекомендуется в независимости от текущего значения таймера вызвать метод Dialog.GetMessagesForDialog чтобы в клиентском приложении сразу отобразилось последнее отправленное менеджером сообщение.

</aside>

В результате запросов этапа 1 и этапа 2 возвращается одинаковый массив записей, который состоит из следующих объектов

{
	"Result": [
		{
			//код сообщения
			"Id": 84,
			//код диалога
			"DialogId": 16,
			//код канала, в рамках которого было получено данное сообщение
			"ChannelId": "014e3e30-18e3-4bce-8c93-0b418abcb70f",
			//внешний код сообщений ЦАП или Телеграм
			"MessageId": "7f0e94ab-734f-49ad-a3aa-3bf5e2936ae0",
			//текст сообщения (может содержать объект в случае 
			//типа сообщения MessageType == ImageFileLink)
			"MessageText": "сообщение через API",
			//код клиента
			"DialogClientId": 144464,
			"DialogClientFio": "Белоусов Максим Николаевич",
			//флаг прочитанного сообщения СОТРУДНИКОМ компании
			"IsUnread": false,
			//тип сообщения
			"MessageType": 4,
			//статус доставки сообщения КЛИЕНТУ
			"ReadStatus": 3,
			//код филиала (для исходящих сообщений всегда -1)
			"FilialId": -1,
			//если TRUE то сообщение отправлено КЛИЕНТОМ в КОМПАНИЮ (входящее сообщение)
			"IsClientMessage": false,
			//дата получения сообщения
			"CreationTime": "19.10.2023 15:01:19",
			//сотрудник, который написал сообщение (если исходящее)
			"OwnerId": 10179,
			"OwnerTitle": "belousov belousov"
		},
		{
			"Id": 83,
			"DialogId": 16,
			"ChannelId": "014e3e30-18e3-4bce-8c93-0b418abcb70f",
			"MessageId": "6b78c2b8-c8be-4be1-bef5-beb74c8ad6cd",
			"MessageText": "Проверка восемь",
			"DialogClientId": 144464,
			"DialogClientFio": "Белоусов Максим Николаевич",
			"IsUnread": false,
			"MessageType": 4,
			"ReadStatus": 0,
			"FilialId": 1,
			"IsClientMessage": true,
			"CreationTime": "18.10.2023 16:57:21",
			"OwnerId": 0,
			"OwnerTitle": ""
		}
	],
	"ApiKey": "",
	"ApiVersion": "100",
	"Method": "Dialogs.GetMessagesForDialog",
	"Errors": [],
	"Duration": 3.0023
}
public enum ReadStatusTypes
    {
				/// Написано и отправлено клиентом (аналого Входящее)
        None        =   0,
        /// <summary>
        /// Отправлено
        /// </summary>
        Sent        =   1,
        /// <summary>
        /// Доставлено
        /// </summary>
        Delivered   =   2,
        /// <summary>
        /// Прочитано
        /// </summary>
        Read        =   3,
        /// <summary>
        /// Входящее
        /// </summary>
        Inbound     =   4,
    }