/v1/contacts
С помощью узла contacts
вы можете управлять пользователями WhatsApp в своей базе данных, проверяя их подлинность перед отправкой сообщений, а также проверяя их личность с помощью хэшей.
Узел contacts
позволяет:
status
должен иметь значение valid
); Начиная с версии 2.39.1 узел messages
можно использовать напрямую с номером телефона без предварительного преобразования в ID WhatsApp с использованием узла contacts
.
Мы изменяем назначение узла contacts
с версии 2.43, в результате чего он более не будет предоставлять информацию о статусе номера телефона. Вне зависимости от того, есть ли у пользователя аккаунт WhatsApp, ответ всегда будет содержать значение valid
для поля status
и wa_id.
Вы должны предоставить своим клиентам возможность согласиться на получение сообщений в WhatsApp от вашей компании или отказаться от этого. Процедурой получения согласия управляете вы сами. Когда клиент даст согласие, воспользуйтесь узлом contacts
, чтобы проверить зарегистрированный номер. Дополнительную информацию см. в статье Получение согласия на отправку сообщений в WhatsApp.
Если компания использует конечную точку не по назначению, будут приняты следующие меры:
Мы рекомендуем проверять контакты перед отправкой сообщений. Однако для ответа на входящее сообщение от клиента проверять контакты не нужно: ответить можно сразу же, используя полученный wa_id
. Это не влечет за собой дополнительных расходов, так как результаты кэшируются.
Перед отправкой сообщений пользователям, которые согласились их принимать, отправьте запрос POST
к конечной точке /v1/contacts
, чтобы создать запрос на проверку пользователя аккаунта WhatsApp. Добавьте в вызов список проверяемых номеров телефонов.
POST /v1/contacts { "blocking": "wait" | "no_wait", "contacts": [ "16315551000", "+1 631 555 1001", "6315551002", "+1 (631) 555-1004", "1-631-555-1005" ], "force_check": false | true }
В ответе будут указаны текущие статусы (status
) запрошенных номеров и соответствующие ID WhatsApp (wa_id
):
{ "contacts": [ { "wa_id": "16315551000", "input": "16315551000", "status": "valid" }, { "wa_id": "16315551001", "input": "+1 631 555 1001", "status": "processing" # Only applicable when request is non-blocking }, { "input": "6315551002", "status": "invalid" }, { "input": "+163155588", "status": "failed" } }
Сохраните ID WhatsApp, относящиеся к номерам, для которых параметр status
имеет значение valid
. Действительными считаются пользователи, у которых есть аккаунт WhatsApp. Используйте ID WhatsApp для отправки сообщений и уведомлений.
Регулярно повторяйте эти действия, чтобы список пользователей оставался актуальным. Результаты хранятся в кэше базы данных клиента локального WhatsApp Business API в течение 7 дней.
В вызовах POST
к узлу /v1/contacts
поддерживаются следующие параметры:
Имя | Описание |
---|---|
| Необязательный параметр. Определяет, должен ли запрос дождаться завершения обработки, прежде чем возвращать ответ. Дополнительную информацию см. в разделе Блокировка ниже. Возможные значения: |
| Обязательный параметр. Массив проверяемых номеров телефонов. Номера можно указывать в любом стандартном формате. Рекомендуем начинать номер телефона контакта со знака "плюс" ( |
| Необязательный параметр. Следует ли проверять кэш контактов. Контактная информация обычно кэшируется на 7 дней. Если для параметра Возможные значения: |
С этим узлом связаны следующие границы контекста:
Граница контекста | Описание |
---|---|
Служит для управления идентификационными данными пользователей. Дополнительную информацию см. в статье Изменение личности пользователя в WhatsApp Business. |
Параметр blocking
может принимать два значения: no_wait
и wait
. Если значение параметра blocking
в запросе не задано, по умолчанию используется no_wait
.
Параметр blocking
определяет тип запроса: синхронный или асинхронный. Их различие состоит в том, что ответ на синхронный запрос возвращается после завершения обработки.
Настройка | Описание |
---|---|
| Номера телефонов обрабатываются асинхронно. В ответе некоторые номера могут иметь статус (
|
| Номера обрабатываются синхронно. После синхронизации с сервером в ответе будут указаны окончательные статусы всех контактов. При этом блок запроса возвращает результаты только после проверки всех номеров. Это может занять некоторое время. |
В запросах к contacts
можно указывать номера телефонов в любом стандартном формате.
Если перед номером нет знака "плюс" (+
), то код страны определяется по номеру, с которым зарегистрирован ваш клиент локального WhatsApp Business API. В этом случае правильно определить номера из других стран не удастся.
Рекомендуем всегда начинать номера со знака "плюс" (+
) и кода страны.
Код страны может использоваться, даже если номер после +
недействителен. Рекомендуется проверять номера телефонов перед использованием локального API, чтобы получить предсказуемый результат.
Посмотрите, как это работает, на примере клиента локального WhatsApp Business API, зарегистрированного с индийским номером телефона (код страны +91
):
Номер телефона | Преобразованный номер телефона |
---|---|
|
|
|
|
|
|
|
|
|
|
Полезные данные в ответе от узла contacts
содержат тот же массив номеров телефонов, который передается в запросе, со свойствами input
, status
и wa_id
.
Имя | Описание |
---|---|
| Значение, отправленное в поле |
Версия 2.41 и более ранние | Статус пользователя Возможные значения:
|
Версия 2.43 и более поздние | Статус пользователя Возможные значения:
|
Версия 2.41 и более ранние | ID пользователя WhatsApp, который можно использовать в других вызовах. Возвращается, только если параметр |
Версия 2.43 и более поздние | Возвращается ID пользователя WhatsApp, который может быть действительным или нет. Поскольку нет гарантии, что это значение будет действительным, не используйте его в последующих вызовах. |
Вместе со статусом обработки (processing
) должно выдаваться сообщение HTTP 200 OK
.
Если сообщение с шаблоном отправляется на номер телефона, не имеющий аккаунта WhatsApp, вы получите сообщение об ошибке Недействительный пользователь с кодом ошибки 1013
.
Информацию о других ошибках в ответе см. в статье Сообщения об ошибках и коды статусов.
Блокировку можно рассматривать как защитную функцию, которая не позволит злоумышленникам продолжать вредоносные действия. Заблокировать контакт можно, если он отправил вам сообщение в течение последних 24 часов.
Отправьте вызов API к узлу /v1/contacts/{phone_number}/block
, указав причину блокировки другого аккаунта WhatsApp.
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked" }
В случае успеха ответ будет содержать статус HTTP 200
, а объекта errors не будет.
В случае ошибки ответ выглядит следующим образом:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
В вызовах POST к узлу /v1/contacts/{phone_number}/block
поддерживаются следующие параметры:
Настройка | Описание |
---|---|
| Необязательный параметр. Причина блокировки в произвольной форме. Будет использоваться при блокировке другого аккаунта WhatsApp. Максимальная длина: 60 символов. |
| Обязательный параметр. Номера можно указывать в любом стандартном формате. Рекомендуем начинать номер телефона контакта со знака "плюс" (+) и кода страны. Дополнительную информацию см. в разделе Форматы номеров телефонов. |
Выполните этот вызов, чтобы разблокировать контакт.
Отправьте вызов API к /v1/contacts/{phone_number}/unblock
POST /v1/contacts/+16315551000/unblock
В случае успеха ответ будет содержать статус HTTP 200
, а объекта errors не будет.
В случае ошибки ответ выглядит следующим образом:
{ "errors": [ { "code": 1009, "title": "Parameter value is not valid", "details": "Provided WhatsApp ID is not valid. Please provide a valid WhatsApp ID or a phone number with a country code" } ] }
В вызовах POST к узлу /v1/contacts/{phone_number}/unblock
поддерживаются следующие параметры:
Настройка | Описание |
---|---|
| Обязательный параметр. Номера можно указывать в любом стандартном формате. Рекомендуем начинать номер телефона контакта со знака "плюс" (+) и кода страны. Дополнительную информацию см. в разделе Форматы номеров телефонов. |
Вот как можно получить список своих заблокированных контактов.
Отправьте вызов API к /v1/contacts/blocklist
, чтобы получить разбитый на страницы список своих заблокированных контактов.
GET /v1/contacts/blocklist?limit=10&offset=0
Вы получите ответ с указанием страницы в списке блокировки вместе с информацией о разбивке на страницы.
{ "contacts": [ { "wa_id": "16315551000@s.whatsapp.net" } ], "pagination": { "limit": 10, "offset": 0, "total": 1 } }
В вызовах GET к узлу /v1/contacts/blocklist
поддерживаются следующие параметры:
Настройка | Описание |
---|---|
| Необязательный параметр. Допустимый диапазон: (0; 200]. По умолчанию: 100. |
| Необязательный параметр. По умолчанию: 0. |
Отчеты предоставляют важнейшие сигналы для выработки превентивных решений в отношении злоумышленников. Пожаловаться на контакт можно, если он отправил вам сообщение в течение последних 24 часов.
Отправьте вызов API к узлу /v1/contacts/{phone_number}/report
, указав причину блокировки другого аккаунта WhatsApp.
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked", "block": "true | false optional boolean with default of false", "message_id": "message-id. Optional reported message id" }
В случае успеха ответ будет содержать статус HTTP 200
, а объекта errors не будет.
В случае ошибки ответ выглядит следующим образом:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
В вызовах POST к узлу /v1/contacts/{phone_number}/report
поддерживаются следующие параметры:
Настройка | Описание |
---|---|
| Необязательный параметр. Причина блокировки в произвольной форме. Будет использоваться при блокировке другого аккаунта WhatsApp. Максимальная длина: 60 символов. |
| Необязательный параметр. По умолчанию используется значение Нужно ли заблокировать контакт или просто пожаловаться на него. |
| Необязательный параметр. ID сообщения, в отношении которого отправляется жалоба. Если этот параметр не указан, в WhatsApp будут отправлены последние 5 сообщений. |
| Обязательный параметр. Номера можно указывать в любом стандартном формате. Рекомендуем начинать номер телефона контакта со знака "плюс" (+) и кода страны. Дополнительную информацию см. в разделе Форматы номеров телефонов. |