Собеседник отправил точку на карте, место или трансляцию геопозиции.
typeWebhook |
incomingMessageReceived |
typeMessage |
locationMessage |
| Флаг настроек | incomingWebhook |
| Каналы | MAX, Telegram, WhatsApp |
Пример
Мария отправила в MAX, где ждёт после занятия:
{
"typeWebhook": "incomingMessageReceived",
"instanceData": {"idInstance": 7100000001, "wid": "79990000001@c.us", "typeInstance": "v3", "channel": "max"},
"timestamp": 1791823810,
"idMessage": "117428962874105326",
"eventId": "msg:8695836:117428962874105326",
"senderData": {
"chatId": "8695836", "chatName": "Мария", "chatType": "user",
"sender": "8695836", "senderName": "Мария", "senderType": "user",
"senderContactName": "", "senderPhoneNumber": 0
},
"messageData": {
"typeMessage": "locationMessage",
"locationMessageData": {
"nameLocation": "",
"address": "",
"latitude": 55.0188,
"longitude": 82.9387,
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
}
}
}
Поля
| Поле | Описание |
|---|---|
locationMessageData.latitude, longitude |
координаты, градусы, числа с дробной частью |
locationMessageData.nameLocation |
название места; "", если его нет |
locationMessageData.address |
адрес места; "", если его нет |
locationMessageData.jpegThumbnail |
всегда "" — превью карты Gratio не передаёт |
locationMessageData.isForwarded, forwardingScore |
геопозиция переслана — см. Ссылка и пересланное |
Остальные поля конверта — в статье Формат уведомления.
В других каналах
| Канал | Что приходит |
|---|---|
| MAX | только координаты |
| Telegram | координаты; у места — адрес в address, название не передаётся. Трансляция — первой точкой |
| координаты, название места и адрес, если их выбрали. Трансляция — первой точкой |
Место в WhatsApp:
"locationMessageData": {
"nameLocation": "Школа робототехники",
"address": "ул. Ленина, 12",
"latitude": 55.0188,
"longitude": 82.9387,
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
}
Как обработать
Сделать ссылку на карту для оператора:
def on_location(body: dict) -> str | None:
data = body["messageData"]
if data["typeMessage"] != "locationMessage":
return None
loc = data["locationMessageData"]
title = loc["nameLocation"] or loc["address"] or "Точка на карте"
return f"{title}: https://yandex.ru/maps/?pt={loc['longitude']},{loc['latitude']}&z=17"
Что дальше
- sendLocation — отправить геопозицию.
- Контакт — уведомление о карточке контакта.
