Отправка сообщений с медиафайлами

Для отправки клиентам сообщений с аудиозаписями, документами, изображениями, стикерами или видео используйте узел messages.

По сути, при отправке сообщения с медиафайлами необходимо указать в теле запроса ID загруженного медиафайла или ссылку на этот файл. Также необходимо указать тип медиафайла: audio, document, image, sticker или video. При получении запроса медиафайлы загружаются на сервер WhatsApp и отправляются пользователю, указанному в поле to.

На данный момент существует два способа отправки сообщений с медиафайлами через WhatsApp Business API:

  • ID — в этом случае нужно сначала загрузить медиафайл, получив ID, необходимый при вызове API messages, с помощью узла media;
  • ссылки — в этом случае вы просто указываете ссылку HTTP(S), по которой приложение само загрузит медиафайл.

Прежде чем начать

Вам понадобится:

Шаг 1. Выполните запрос POST к /messages.

Загрузив медиафайл, используйте полученный ID в поле id вызова API для отправки сообщения. Вы также можете задать параметр link со ссылкой на нужный медиафайл. Пока поддерживаются только ссылки HTTP и HTTPS.

Таким образом, для отправки медиафайла необходимо задать один из двух параметров: id или link.

Пример

Этот код для сообщений с несколькими разными объектами (audio, document, image, sticker, video) приведен исключительно в качестве примера. Тело действительного запроса может содержать только один объект.

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "audio" | "contact" | "document" | "image" | "location" | "sticker" | "text" | "video",
  
  "audio": {
    "id": "your-media-id"
  }
  
  "document": {
    "id": "your-media-id",
    "filename": "your-document-filename"
  }
  
  "document": {
    "link": "the-provider-name/protocol://the-url",
    "provider": {
        "name" : "provider-name"
    }
  }
  
  "document": {
    "link": "http(s)://the-url.pdf"
  }
  
  "video": {
    "id": "your-media-id"  
  }
  
  "image": {
    "link": "http(s)://the-url",
    "provider": {
        "name" : "provider-name"
    }
  }
  
  "image": {
    "id": "your-media-id"   
  }
  
  "sticker": {
    "id": "your-media-id"
  }
  
  "sticker": {
    "link": "http(s)://the-url",
    "provider": {
      "name" : "provider-name"
    }
  }
}

Подробнее о параметрах:

Шаг 2. Проверьте ответ.

В случае успеха ответ содержит объект messages с ID сообщения.

{
  "messages": [{
    "id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
  }]
}  

В случае неудачи на URL Webhook отправляется обратный вызов (хотя в таком ответе, как и в случае успеха, тоже содержится ID сообщения). Поэтому так важно заранее настроить сервер Webhooks.

Дополнительную информацию об ошибках см. в разделе Сообщения об ошибках и коды статусов.