Перейти к содержанию

Как получить имя собеседника в интеграциях?#

Содержание#

Почему не всегда доступно имя?#

Из-за политики безопасности WhatsApp имя пользователя может быть недоступно в некоторых случаях:

  • Если вы пишете первым, и номер не сохранён в контактах;
  • Если собеседник не ответил на ваше сообщение;
  • Если номер не фигурирует в истории переписки (нет чата).

В таких случаях WhatsApp может не предоставлять информацию о профиле, включая имя.

Как получить имя собеседника?#

GetContacts#

Метод GetContacts позволяет получить список номеров, добавленных в контакты, или тех, с кем у вас уже был чат.

  • Если с номером уже есть чат или номер сохранен в контактах, он будет доступен через этот метод;
  • В ответе можно найти поле name — это имя, указанное пользователем в WhatsApp;
  • Если имя недоступно, возвращается только номер или пустое поле.

Пример структуры ответа:

{
    "id": "79876543210@c.us",
    "name": "Имя",
    "contactName": "Имя контакта",
    "type": "user"
    }

Важно!

Если вы хотите, чтобы контакт отобразился при запросе, GetContacts, нужно:

  • либо сохранить номер вручную в контакты,
  • либо чтобы с номером был хотя бы один чат (входящее или исходящее сообщение).

GetContactInfo#

Метод GetContactInfo позволяет получить данные по конкретному номеру телефона.

В ответе может быть доступно:

  • name — имя профиля (если доступно),
  • contactName — имя, указанное в контакнтной книге (если номер сохранён в контакты),
  • другие данные о профиле (аватар, электронная почта и др.)

Пример структуры ответа:

{
    "avatar": "https://pps.whatsapp.net/v/...",    
    "name": "Имя",
    "contactName": "Имя контакта",
    {...}
}

GetGroupData#

Если вы работаете с группами, метод GetGroupData поможет получить название группы, из которой пришло сообщение.

Пример структуры ответа:

{
    "groupId": "12345678909876543210@g.us",
    "owner": "79876543210@c.us",
    "subject": "GREEN-API Group",
    {...}
}

Обработка уведомлений#

Один из самых надежных способов получить имя — обрабатывать входящие уведомления.

Когда вы получаете входящее сообщение, в теле уведомления может быть поле с именем отправителя.
Это имя отображается даже в случае, если вы не сохранили контакт, при условии, что пользователь написал первым.

Пример структуры уведомления:

{
    "typeWebhook": "incomingMessageReceived",
    "instanceData": {...},
    "timestamp": 1111111111,
    "idMessage": "F7AEC1B7086ECDC7E6E45923F5EDB825",
    "senderData": {
        "chatId": "79001234567@c.us",
        "sender": "79001234567@c.us",
            "chatName": "Иван",
        "senderName": "Иван",
        "senderContactName": "Иван Царевич"
    },
    "messageData": {...}
}

Важно!

Имя в senderName может быть недоступно, если вы писали первым и пользователь не ответил.

Как инициировать чат, если имени ещё нет?#

Если необходимо начать диалог с пользователем, у которого нет чата и контакт не сохранен:

  • Используйте методы отправки с указанием номера в формате chatId ({номер}@c.us).
  • После этого чат создастся, но имя не гарантированно появится — оно отобразится только после ответа пользователя.

Заключение#

Если вы строите систему CRM или бота, которые должна "запоминать" имена пользователей, рекомендуется следующий алгоритм:

  1. При получении входящего сообщения — сохраняйте senderName локально;
  2. При отправке сообщений первым — не рассчитывайте на наличие имени сразу;
  3. Когда получите ответ — обновите имя в своей базе.

Такой подход позволит корректно работать даже с ограничениями политики безопасности WhatsApp.