Перейти к содержимому

Элемент журнала

Обновлено 17 октября 2026

Так выглядит одно сообщение в ответах getChatHistory, getMessage, lastIncomingMessages и lastOutgoingMessages. Элемент плоский, как у Green API: поля сообщения лежат на верхнем уровне, без senderData и messageData.

Пример

Ответ канала цитатой в MAX, отправлен через API и прочитан:

{
  "type": "outgoing",
  "idMessage": "117428956522361912",
  "timestamp": 1791823671,
  "chatId": "8695836",
  "chatType": "user",
  "senderId": "457747484",
  "senderName": "",
  "senderContactName": "",
  "isForwarded": false,
  "forwardingScore": 0,
  "typeMessage": "quotedMessage",
  "textMessage": "Да, место есть. Записали вас на субботу, 11:00.",
  "extendedTextMessageData": {
    "text": "Да, место есть. Записали вас на субботу, 11:00.",
    "stanzaId": "117428955282341903",
    "participant": "8695836"
  },
  "quotedMessage": {
    "stanzaId": "117428955282341903",
    "participant": "8695836",
    "typeMessage": "textMessage",
    "textMessage": "Здравствуйте! Есть места на субботу?"
  },
  "statusMessage": "read",
  "sendByApi": true
}

Поля

Поле Когда есть Описание
type всегда incoming — от собеседника, outgoing — от канала
idMessage всегда id сообщения в мессенджере, строкой
timestamp всегда время сообщения, Unix, с
chatId всегда чат: личный, группа или адрес почты
chatType всегда user, group, channel, bot
senderId всегда кто написал; у своих — сам канал
senderName всегда имя автора в мессенджере; бывает пустым
senderContactName всегда пустая строка — поле для совместимости с Green API
isForwarded, forwardingScore всегда пересланное: true и 1, иначе false и 0
typeMessage всегда вид, как в уведомлениях: textMessage, imageMessage, quotedMessage… Звонок — callMessage
textMessage всегда текст, подпись файла или ""
downloadUrl, fileName, mimeType, caption, jpegThumbnail файлы ссылка на файл и его данные — раздел «Файл» ниже
extendedTextMessageData ссылка, пересланное, цитата как в уведомлениях: у цитаты — text, stanzaId, participant
quotedMessage ответ цитатой stanzaId — id исходного сообщения, participant — его автор; typeMessage и textMessage — если площадка сообщила текст
contactMessageData, locationMessageData, pollMessageData контакт, геопозиция, опрос как в уведомлениях
callMessageData звонки направление, исход, длительность — раздел «Звонок» ниже
emailMessageData письма тема, цепочка, адресаты, папка — раздел «Письмо» ниже
statusMessage свои sent, delivered (только WhatsApp), read
sendByApi свои true — отправлено через API, false — с телефона или из приложения мессенджера
isEdited если правку видел Gratio true; textMessage — уже новый текст
isDeleted если удаление видел Gratio true; сообщение остаётся в журнале Gratio с прежним текстом

Как устроены contactMessageData, locationMessageData, pollMessageData и extendedTextMessageData, смотрите в статьях о форматах: Контакт, Геопозиция, Опрос, Ссылка и пересланное.

Файл

Данные файла лежат прямо в элементе, а не во вложенном объекте. Фото от Марии в MAX:

"typeMessage": "imageMessage",
"textMessage": "Вот расписание",
"downloadUrl": "https://api.gratio.net/media/7100000001/8695836/117428960974949548/0/d8f9…",
"caption": "Вот расписание",
"fileName": "117428960974949548.jpg",
"mimeType": "image/jpeg",
"jpegThumbnail": ""
  • downloadUrl — подписанная ссылка на хранилище Gratio, без токена. Подробно — Файлы и ссылки на них.
  • В альбоме у элемента журнала только первый файл. Остальные — в уведомлении о сообщении, в additionalFiles, см. Файлы и альбомы.

Звонок

Звонки лежат в журнале рядом с сообщениями. Входящий звонок, разговор 11 секунд:

"typeMessage": "callMessage",
"textMessage": "",
"callMessageData": {"direction": "in", "outcome": "completed", "durationSeconds": 11, "isVideo": false}
Поле Значение
direction in — входящий, out — исходящий
outcome ringing — звонит, completed — был разговор, missed — пропущен, canceled — отменён до ответа, rejected — отклонён, busy — занято, failed — соединение прервалось
durationSeconds длительность разговора, с; 0, если разговора не было. В WhatsApp 0 и тогда, когда ответили на телефоне: конец такого разговора Gratio не видит
isVideo видеозвонок

Ход звонка в реальном времени — уведомления incomingCall и outgoingCall.

Письмо

У писем канала «Почта» есть emailMessageData. Письмо Марии во «Входящих»:

"chatId": "maria@client.ru",
"senderId": "maria@client.ru",
"typeMessage": "textMessage",
"textMessage": "Добрый день! Пришлите, пожалуйста, договор.",
"emailMessageData": {
  "subject": "Договор на обучение",
  "messageId": "a7f3c2e1@client.ru",
  "threadId": "c62b698304229a98aad3",
  "inReplyTo": null,
  "from": "maria@client.ru",
  "to": ["info@school.ru"],
  "cc": [],
  "replyTo": [],
  "auto": null,
  "folder": "inbox",
  "signature": "",
  "quoteCut": false,
  "form": null,
  "truncated": false,
  "mailbox": "INBOX",
  "uid": 4512,
  "hasHtml": true
}
Поле Описание
subject тема
messageId, inReplyTo Message-ID письма и того, на которое оно отвечает, без угловых скобок
threadId id первого письма цепочки в канале — общий у всех писем переписки
from, to, cc, replyTo адреса в нижнем регистре
auto автописьмо: auto_reply, bulk, service, bounce, read_receipt; null — письмо человека
folder роль папки: inbox, sent, spam, drafts, trash, archive, all, other
signature, quoteCut отрезанная подпись; отрезана ли цитата прошлых писем
form заявка с формы сайта или null, см. Заявки с форм сайта
truncated письмо больше предела: взят текст, вложений может не хватать
mailbox, uid папка на сервере и номер письма в ней
hasHtml у письма есть HTML-версия, см. getEmail

Подробно о письмах в уведомлениях — Письмо.

Отличия от уведомления

Те же данные, что в уведомлении о сообщении, но без вложенности:

В уведомлении В элементе журнала
typeWebhook: incomingMessageReceived / outgoing… type: incoming / outgoing
senderData.chatId, senderData.chatType chatId, chatType
senderData.sender, senderData.senderName senderId, senderName
messageData.typeMessage typeMessage
messageData.textMessageData.textMessage textMessage
messageData.fileMessageData.* downloadUrl, fileName, mimeType, caption, jpegThumbnail
статусы — отдельными уведомлениями outgoingMessageStatus последний статус — в statusMessage

instanceData и eventId в элементе журнала нет.

Что дальше

Была ли статья полезна?