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

Контакт

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

Собеседник поделился контактом — своим или чужим.

typeWebhook incomingMessageReceived
typeMessage contactMessage
Флаг настроек incomingWebhook
Каналы MAX, Telegram, WhatsApp

Пример

Мария прислала в Telegram контакт Олега:

{
  "typeWebhook": "incomingMessageReceived",
  "instanceData": {"idInstance": 7100000001, "wid": "79990000001@c.us", "typeInstance": "telegram", "channel": "telegram"},
  "timestamp": 1791823780,
  "idMessage": "4817",
  "eventId": "msg:8617393401:4817",
  "senderData": {
    "chatId": "8617393401", "chatName": "Мария", "chatType": "user",
    "sender": "8617393401", "senderName": "Мария", "senderType": "user",
    "senderContactName": "", "senderPhoneNumber": 0
  },
  "messageData": {
    "typeMessage": "contactMessage",
    "contactMessageData": {
      "chatId": "8600000002",
      "urlAvatar": "",
      "phoneNumber": 79997654321,
      "displayName": "Олег Петров",
      "vcard": "",
      "forwardingScore": 0,
      "isForwarded": false
    }
  }
}

Поля

Поле Описание
contactMessageData.chatId адрес контакта в этом мессенджере — по нему можно написать sendMessage. "", если контакт не пользуется мессенджером
contactMessageData.displayName имя в карточке
contactMessageData.phoneNumber телефон числом, только цифры; 0, если площадка его не дала
contactMessageData.urlAvatar ссылка площадки на фото контакта; "", если нет
contactMessageData.vcard карточка vCard текстом — только WhatsApp
contactMessageData.isForwarded, forwardingScore контакт переслан — см. Ссылка и пересланное

Остальные поля конверта — в статье Формат уведомления.

В других каналах

Канал chatId phoneNumber urlAvatar vcard
MAX id контакта в MAX, "1111111" 0 — MAX телефон не отдаёт ссылка MAX на фото ""
Telegram id в Telegram, если контакт там есть есть "" ""
WhatsApp "79997654321@c.us" есть "" есть

Контакт в WhatsApp:

"contactMessageData": {
  "chatId": "79997654321@c.us",
  "urlAvatar": "",
  "phoneNumber": 79997654321,
  "displayName": "Олег Петров",
  "vcard": "BEGIN:VCARD\nVERSION:3.0\nFN:Олег Петров\nTEL;type=CELL;waid=79997654321:+7 999 765-43-21\nEND:VCARD",
  "forwardingScore": 0,
  "isForwarded": false
}

Из нескольких контактов в одном сообщении WhatsApp приходит первый.

Как обработать

Сохранить контакт в CRM и, если есть адрес в мессенджере, связать с ним:

def on_contact(body: dict) -> None:
    data = body["messageData"]
    if data["typeMessage"] != "contactMessage":
        return
    card = data["contactMessageData"]
    phone = str(card["phoneNumber"]) if card["phoneNumber"] else None
    save_contact(
        name=card["displayName"],
        phone=phone,
        chat_id=card["chatId"] or None,          # адрес для sendMessage в этом канале
        channel=body["instanceData"]["channel"],
        shared_by=body["senderData"]["chatId"],
    )

phoneNumber — число: в JavaScript безопасно до 15 цифр, телефоны в этот предел укладываются.

Что дальше

  • sendContact — отправить контакт.
  • checkAccount — проверить, есть ли у номера аккаунт в мессенджере.
  • Геопозиция — уведомление о точке на карте.

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