Собеседник переслал сообщение из другого чата или прислал ссылку, к которой площадка сделала карточку превью.
typeWebhook |
incomingMessageReceived |
typeMessage |
extendedTextMessage |
| Флаг настроек | incomingWebhook |
| Каналы | MAX, Telegram, WhatsApp, почта |
Пример
Мария переслала в MAX сообщение из чата родителей:
{
"typeWebhook": "incomingMessageReceived",
"instanceData": {"idInstance": 7100000001, "wid": "79990000001@c.us", "typeInstance": "v3", "channel": "max"},
"timestamp": 1791823720,
"idMessage": "117428958116209731",
"eventId": "msg:8695836:117428958116209731",
"senderData": {
"chatId": "8695836", "chatName": "Мария", "chatType": "user",
"sender": "8695836", "senderName": "Мария", "senderType": "user",
"senderContactName": "", "senderPhoneNumber": 0
},
"messageData": {
"typeMessage": "extendedTextMessage",
"extendedTextMessageData": {
"text": "Занятие в субботу переносится на 12:00.",
"description": "",
"title": "",
"forwardingScore": 1,
"isForwarded": true
}
}
}
Поля
| Поле | Описание |
|---|---|
extendedTextMessageData.text |
текст сообщения; у пересланного — текст оригинала |
extendedTextMessageData.isForwarded |
true — сообщение переслано |
extendedTextMessageData.forwardingScore |
1 у пересланного, 0 у остальных. Сколько раз пересылали, Gratio не считает |
extendedTextMessageData.title |
заголовок карточки ссылки; "", если карточки нет |
extendedTextMessageData.description |
описание карточки ссылки |
Автора оригинала и чат, откуда переслали, Gratio не передаёт.
Остальные поля конверта — в статье Формат уведомления.
Ссылка с превью
Карточку ссылки отдаёт только MAX:
"messageData": {
"typeMessage": "extendedTextMessage",
"extendedTextMessageData": {
"text": "Расписание на сайте: https://school.ru/schedule",
"description": "Занятия по робототехнике для детей 7–14 лет",
"title": "Расписание — Школа робототехники",
"forwardingScore": 0,
"isForwarded": false
}
}
В Telegram и WhatsApp сообщение со ссылкой приходит обычным текстом — textMessage, см. Текст, ссылка — в самом тексте.
Пересланный файл
Пересланные фото, документ, контакт или геопозиция приходят своим видом — imageMessage, documentMessage, contactMessage и т. д. Признак пересылки — isForwarded: true внутри данных:
"messageData": {
"typeMessage": "documentMessage",
"fileMessageData": {
"downloadUrl": "https://api.gratio.net/media/7100000001/8695836/117428960974949548/0/d8f9…",
"caption": "", "fileName": "Расписание.pdf", "jpegThumbnail": "", "isAnimated": false,
"mimeType": "application/pdf", "forwardingScore": 1, "isForwarded": true
}
}
В других каналах
| Канал | Пересланное | Карточка ссылки |
|---|---|---|
| MAX | extendedTextMessage |
есть |
| Telegram | extendedTextMessage |
нет |
extendedTextMessage |
нет | |
| Почта | письмо-пересылка: extendedTextMessage, текст — целиком, с пересланной частью; см. Письмо |
нет |
Как обработать
Показать оператору пометку «переслано», текст — как обычно:
def message_text(data: dict) -> tuple[str, bool]:
"""Текст и признак пересылки для любого текстового вида."""
kind = data["typeMessage"]
if kind == "textMessage":
return data["textMessageData"]["textMessage"], False
if kind in ("extendedTextMessage", "quotedMessage"):
ext = data["extendedTextMessageData"]
return ext["text"], bool(ext.get("isForwarded"))
return "", False
Что дальше
- forwardMessages — переслать сообщение самому.
- Ответ цитатой — ответ на конкретное сообщение.
- Файлы и альбомы — фото, документы, голосовые.
