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

Особенности работы с контактами при помощи lid#

WhatsApp* постепенно отказывается от использования номеров телефонов в качестве идентификатора чата. Мы заранее создаем условия для работы с нашей API. Архитектура и логика взаимодействия с API осталась прежней, однако имеется ряд отличий ввиду особенностей работы мессенджера c контактами.

Бета-версия

Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно.

Изменения WhatsApp затронут всех пользователей, поэтому необходимо быть готовыми к грядущим переменам. В данной статье рассмотрим какие изменения произойдут в API и что нужно будет сделать, чтобы продолжать эффективно использовать WhatsApp API не теряя связи с вашими клиентами.

Содержание#

Как раньше отправлялись сообщения по номеру телефона#

Для отправки сообщений используйте идентификатор чата. В GREEN-API поддерживается два типа чатов - личный чат и групповой чат.

Ранее в теле запроса метода достаточно было указать номер получателя с префиксом @c.us, чтобы передать текстовое сообщение:

    {
    "chatId": "1111111111@c.us",
    "message": "Привет, Иван Царевич"
    }

Постепенный отказ от использования префикса @c.us#

Во всех методах отправки сообщений, идентификаторе чата, методах работы с журналами, а также в вебхуках префикс @c.us используется для обратной совместимости. Теперь вместо него вы будете получать идентификатор чата в виде @lid.

Работа с групповыми чатами

Для работы с групповыми чатами логика работы с API останется прежней. Подробнее о работе с идентификатором группового чата можно ознакомиться в нашей документации.

Мы настоятельно рекомендуем переходить на использование идентификатора личного чата @lid.

Отправка сообщений с помощью @lid#

В целом отправка сообщений по @lid отличается от отправки по номеру телефона тем, что идентификатор чата необходимо предварительно получать методом CheckWhatsapp или из переписки с пользователем.

Если идентификатор чата неизвестен, сначала используйте метод CheckWhatsapp, получите значение chatId для отправки сообщений методом SendMessage и другими методами.

Отправка сообщения с помощью @lid

    {
    "chatId": "120650379300963@lid",
    "message": "Привет, Иван Царевич"
    }

В настоящее время в журналах и вебхуках будет приходить номер телефона пользователя, даже если была отправка по @lid.

Получение журналов и вебхуков с @lid#

Бета-версия

Функциональность находится в режиме бета-версии. В данный момент получение @lid с помощью журналов и вебхуков не гарантируется.

В личном кабинете в настройках инстанса необходимо установить в поле Использовать идентификаторы чатов значение Да, затем нажать на кнопку
Сохранить изменения. Либо с помощью метода SetSettings указав в поле enableLidMode значение yes.

Для применения настроек необходимо разлогинить ваш инстанс, а затем снова авторизовать по QR или по коду. Для получения журналов и вебхуков необходимо включить уведомления в личном кабинете или с помощью метода SetSettings.

Проверьте методом GetSettings что настройки инстанса применились, для этого проверьте значение поля enableLidMode - yes.

Если всё настройки применились, то в журналах в полях chatId и senderId будет записан номер @lid, уникальный для каждого инстанса.

Пример журнала для последних входящих сообщений с @lid

{
        "type": "incoming",
        "idMessage": "ACB2EA51BD0573D8F64E480908C6017A",
        "timestamp": 1779704763,
        "typeMessage": "textMessage",
        "chatId": "155508384256027@lid",
        "textMessage": "Привет, я использую GREEN-API для отправки сообщения в WhatsApp!",
        "senderId": "155508384256027@lid",
        "senderName": "Иван Царевич",
        "senderContactName": "",
        "deletedMessageId": "",
        "editedMessageId": "",
        "isEdited": false,
        "isDeleted": false
    },
    {
        "type": "incoming",
        "idMessage": "AC710B072D589F5583ADF9E4C904330E",
        "timestamp": 1779703495,
        "typeMessage": "textMessage",
        "chatId": "155508384256027@lid",
        "textMessage": "Привет! Я использую GREEN-API!",
        "senderId": "155508384256027@lid",
        "senderName": "Иван Царевич",
        "senderContactName": "",
        "deletedMessageId": "",
        "editedMessageId": "",
        "isEdited": false,
        "isDeleted": false
    }

Пример вебхука входящих сообщений с @lid

{
  "typeWebhook": "incomingMessageReceived",
  "idMessage": "AC162054DB255E4CF2FBD5C559089191",
  "instanceData": {
    "idInstance": 1101111111,
    "wid": "79876543210@c.us",
    "typeInstance": "whatsapp"
  },
  "timestamp": 1588091580,
  "senderData": {
    "chatId": "155508384256027@lid",
    "sender": "155508384256027@lid",
    "senderName": "Иван",
    "senderContactName": "",
    "chatName": "Иван Царевич"
  },
  "messageData": {
    "typeMessage": "textMessage",
    "textMessageData": {
      "textMessage": "Привет, я использую GREEN-API для отправки сообщения в WhatsApp!"
    }
  }
}

Смена lid#

В редких случаях чат может переместиться с одного lid на другой. Происходит это нечасто: на аккаунте со 100 чатами таким может оказаться один чат.

Смена lid происходит на стороне мессенджера и не связана:

  • со сменой номера телефона пользователя;
  • с переносом аккаунта между Meta Business Manager и WhatsApp;
  • с какими-либо действиями пользователя или вашей интеграции.

WhatsApp сообщает нам о смене идентификатора, и мы сохраняем новый lid на своей стороне. Новый идентификатор возвращается в методах GetChats и GetContacts в поле newChatId.

Поле newChatId приходит в ответе только тогда, когда для пользователя уже есть новый lid. Если нового lid нет, то поля в ответе не будет.

Пример ответа метода GetContacts с новым lid

[
    {
        "id": "138788093320001@lid",
        "name": "Кощей Бессмертный",
        "contactName": "Кощей Бессмертный Работа",
        "type": "user",
        "newChatId": "138788093320002@lid"
    }
]

Пример ответа метода GetChats с новым lid

[
    {
        "archive": false,
        "id": "138788093320001@lid",
        "ephemeralExpiration": 0,
        "ephemeralSettingTimestamp": 0,
        "name": "Кощей Бессмертный",
        "type": "user",
        "unreadCount": 0,
        "newChatId": "138788093320002@lid"
    }
]

Важно

Новый lid появляется в ответе методов GetChats и GetContacts не всегда сразу - поле newChatId может появиться позже или после каких-либо действий пользователя. Поэтому как только вы увидели newChatId, сразу замените сохранённый у вас идентификатор чата на новый и в дальнейшем обращайтесь к чату только по нему. Продолжать работу по старому lid не рекомендуется.

Отправка сообщения по старому lid

Если вы отправите сообщение по старому lid, а новый lid уже доступен, сообщение придёт в новый чат. Это дополнительная страховка с нашей стороны, но она не отменяет необходимости заменить старый идентификатор на новый.

Необходимость перехода на @lid#

WhatsApp уведомляет, что постепенный отказ от номеров телефонов продлится примерно до конца 2026 года, поэтому стоит быть готовым к переменам.

Из этой статьи вы узнали, что переход на @lid можно произвести без значительных изменений интеграции и в короткие сроки.

Именно поэтому уже сегодня стоит подготавливать вашу интеграцию или чат-бота к работе с @lid.