im/Messages

Коллекция IM-сообщений, привязанных к IM-аккаунтам и абонентам. Коллекция создается и используется микросервисом 'im'. Имеет тип history, партиционируется и адресуется с использованием дат.

Сущности для полученных сообщений создаются сценариями получения сообщений с IM-серверов. Сущности отправляемых сообщений создаются через API или другими сервисами системы.

Сообщения имеют состояния, влияющие на процесс обслуживания. Так, для отправки сообщения состояние должно быть выставлено в 'sending', а после отправки автоматически выставляется в 'sent'.

Все вложения, HTML содержимое, а также нативное неразобранное содержание письма сохраняются в виде вложений, хранятся в файловой системе. Это вносит ограничения на файловую систему, показатель inodes которой может быть быстро исчерпан, если изначально лимитирован в месте хранения вложений.

Тип хранилища: history.

Table 1. Поля класса
Поле Описание

id

Идентификатор.

account_id

Идентификатор родительского email-аккаунта.

remoteParty_id

Идентификатор каталога.

dateTime

Дата-время создания сущности. Используется в том числе при определении партиции хранения в БД.

messageDirection

Направление сообщения:

  • in - входящее сообщение.

  • out - исходящее/отправленное сообщение.

messageType

Тип сообщения:

  • text - текст

  • image - изображение

  • document - документ

  • audio - аудио

  • video - видео

  • hyperlink - ссылка на внешний ресурс

  • buttons - инлайн-клавиатура

  • undefined - содержимое прочих типов

messageState

Состояние письма:

  • sending - сообщение готовое к отправке.

  • sent - сообщение отправлено.

  • delivered - сообщение доставлено получателю (только для тех сервисов, где это поддерживается).

  • read - сообщение прочитано получателем (только для тех сервисов, где это поддерживается).

  • received - полученное сообщение.

  • error - ошибка отправки.

  • undefined - неизвестное состояние.

statusText

Заполняется содержанием ошибки, если полученное сообщение имеет состояние error, либо ошибка возникла при отправке.

text

Текст сообщения

file

Файл-вложение, соответствующее типу сообщения.

data

Объект с данными прочих типов, например структура для клавиатуры (отправляемое сообщение типа 'buttons') или выбранный пункт на инлайн-клавиатуре (полученное сообщение типа 'buttons').

Например, отправка сообщения типа 'buttons' в телеграм может содержать такое значение поля 'data':

{
  "inline_keyboard": [
    [
       {"text": "1", "callback_data": "ZZZ"}
    ],
    [
       {"text": "2.1", "callback_data": "AAA"},
       {"text": "2.2", "callback_data": "BBB"}
    ]
  ]
}

При нажатии на кнопку 2.1 будет получено сообщение и сформирована сущность с типом 'buttons' и значением поля 'data':

{
   "callback_data": "AAA"
}

sendOptions

Опции для отправляемого сообщения.

nativeId

Оригинальный идентификатор сообщения в IM-сервисе. Заполняется автоматически для входящих и исходящих сообщений. Значение формируется как 'AccountId/MESSAGE_ID' и используется для привязки реакций, статусов, ответов.

nativeId2

Оригинальный тип сообщения в IM-сервисе. Заполняется автоматически для тех каналов, где тип определен. Заполняется автоматически для входящих и исходящих сообщений в каналах, где поступают события с двойным идентификатором: абонента и сообщения в диалоге с абонентом. Например, vk. Значение формируется как 'AccountId/PEER_ID/PEER_MESSAGE_ID' и используется для привязки реакций, статусов, ответов.

nativeMessageType

Оригинальный тип сообщения в IM-сервисе. Заполняется автоматически для тех каналов, где тип определен.

Например:

  • text - текст.

  • photo - фотография.

  • image - изображение.

  • doc - произвольный документ.

  • callback_query - выбор в меню.

rawMessage

Исходное нераспарсенное входящее письмо.