Отправка сообщений
Команда отправки
Для отправки сообщения инициируется POST-запрос на адрес:
https://whatsgate.ru/api/v1/send
В теле запроса передается объект отправки сообщения.
Способ отправки
Сообщение через API можно отправить двумя способами:
- Синхронно, т.е. ответ на запрос будет отправлен только после отправки сообщения, и в ответ вернется объект отправленного сообщения с идентификатором. При этом, на вебхук не приходит сообщение "Sent"
- Асинхронно, т.е. в ответе на запрос будет возвращен результат постановки в очередь, как правило это «ОК», а объект отправленного сообщения придет на вебхук, если он установлен. Тип сообщения - "Sent"
Тип сообщения "Ack" приходит на вебхук всегда, независимо от того синхронно или асинхронно было отправлено сообщение.
Тип отправки зависит от значения поля «async», если оно true, то передача происходит асинхронно, в противном случае - синхронно.
Объект отправки сообщения
В теле запроса отправки сообщения 4 основных поля:
{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { ... RECIPIENT_OBJECT ... }, "message": { ... MESSAGE_OBJECT ... } }
- WhatsappID - идентификатор Whatsapp в сервисе
- async - управление синхронностью запроса
- recipient - объект получателя сообщения
- message - объект сообщения
Recipient - объект получателя сообщения
Получатель сообщения в Whatsapp может задаваться несколькими способами
1. по идентификатору Whatsapp. Система идентификаторов Whatsapp несложная, если это контакт, то идентификатор равен номеру контакта, к которому прибавляется @c.us, например 79991112233@c.us, если же мы имеем дело с группой, то идентификатор состоит из внутреннего номера группы с @g.us на конце, т.е. AA11223344@g.us
В случае задания получателя по идентификатору, объект получателя будет иметь следующий вид:
//для контакта "recipient" : { "id" : "79991112233@c.us" } //для группы "recipient" : { "id" : "AA11223344@g.us" }
2. По номеру и типу. Тип может иметь значение contact или group. Значение по умолчанию - contact.
"recipient" : { "type" : "contact", "number" : "79991112233" } //равнозначно "recipient" : { "number" : "79991112233" } //или для группы "recipient" : { "type" : "group", "number" : "AA11223344" }
Message - объект сообщения
Объект сообщения состоит из следующих полей:
"message" : { "type" : "<string>", "body" : "<string>", "quote" : "<string>", "media" : { ... MEDIA_OBJECT ...} }
За тип сообщения отвечает поле type объекта сообщения. Сообщения могут быть следующих типов:
В зависимости от типа изменяются обязательные поля в объекте. По умолчанию, поле type принимает значение «text». Поле quote - является необязательным и может быть указано в любом типе сообщения. В данном поле указывается длинный идентификатор сообщения, который приходит в объекте ответа на отправку в синхронном варианте или на вебхук в асинхронном варианте отправки или как входящее сообщение. При его указании, отправленное сообщение будет помечено как ответ на сообщение, идентификатор которого указан
"message" : { ... "quote" : "true_79991112233@c.us_3EB0EBC34954F8976AA6" ... }
Text - текстовое сообщение
Message с типом «text» является обычным текстовым сообщением. Поле type не указано или равно «text». Поле body является обязательным.
"message" : { "body" : "Hello world!" }
Изображение, стикер, документ или голосовое сообщение
При указании одного из типов медиа в сообщении, поле body становится не обязательным, а поле media - обязательным. В поле body также можно указать текст, который появится в сообщении с медиа-файлом.
Media - объект медиа-файла
Объект медиа-файла состоит из 3 полей:
"media" : { "mimetype" : "<mimetype_list_value>", "data" : "<base64_encoded_data>", "filename" : "<string>" }
- mimetype - значение из списка доступных Mimetype
- data - тело файла, закодированное в base64
- filename - имя файла, как оно будет отображаться у получателя. Используется при типе сообщения doc и image
Голосовое сообщение должно быть в формате ogg
Пример объекта отправки сообщения
Текстовое сообщение
{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { "number" : "79999999999" }, "message": { "body" : "Привет, мир!" } }
Медиа сообщение с изображением
{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { "type" : "group", "number" : "AA11223344" }, "message": { "type" : "image", "body" : "Вам прилетела птичка!", "quote" : "true_79991112233@c.us_3EB0EBC34954F8976AA6", "media" : { "mimetype" : "image/png", "data" : "iVBORw0KG....5CYII=", "filename" : "bird.png" } } }
Список доступных Mimetype
- application/ogg
- application/pdf
- application/zip
- application/gzip
- application/msword
- audio/mp4
- audio/aac
- audio/mpeg
- audio/ogg
- audio/webm
- image/gif
- image/jpeg
- image/pjpeg
- image/png
- image/svg+xml
- image/tiff
- image/webp
- video/mpeg
- video/mp4
- video/ogg
- video/quicktime
- video/webm
- video/x-ms-wmv
- video/x-flv
- application/vnd.ms-excel
- application/vnd.ms-powerpoint
- application/msword