Для отправки сообщения инициируется POST-запрос на адрес:
https://whatsgate.ru/api/v1/send
В теле запроса передается объект отправки сообщения.
Сообщение через API можно отправить двумя способами:
Тип сообщения "Ack" приходит на вебхук всегда, независимо от того синхронно или асинхронно было отправлено сообщение.
Тип отправки зависит от значения поля «async», если оно true, то передача происходит асинхронно, в противном случае - синхронно.
В теле запроса отправки сообщения 4 основных поля:
{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { ... RECIPIENT_OBJECT ... }, "message": { ... MESSAGE_OBJECT ... } }
Получатель сообщения в 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" : { "type" : "<string>", "body" : "<string>", "quote" : "<string>", "media" : { ... MEDIA_OBJECT ...} }
За тип сообщения отвечает поле type объекта сообщения. Сообщения могут быть следующих типов:
В зависимости от типа изменяются обязательные поля в объекте. По умолчанию, поле type принимает значение «text». Поле quote - является необязательным и может быть указано в любом типе сообщения. В данном поле указывается длинный идентификатор сообщения, который приходит в объекте ответа на отправку в синхронном варианте или на вебхук в асинхронном варианте отправки или как входящее сообщение. При его указании, отправленное сообщение будет помечено как ответ на сообщение, идентификатор которого указан
"message" : { ... "quote" : "true_79991112233@c.us_3EB0EBC34954F8976AA6" ... }
Message с типом «text» является обычным текстовым сообщением. Поле type не указано или равно «text». Поле body является обязательным.
"message" : { "body" : "Hello world!" }
При указании одного из типов медиа в сообщении, поле body становится не обязательным, а поле media - обязательным. В поле body также можно указать текст, который появится в сообщении с медиа-файлом.
Объект медиа-файла состоит из 3 полей:
"media" : { "mimetype" : "<mimetype_list_value>", "data" : "<base64_encoded_data>", "filename" : "<string>" }
Голосовое сообщение должно быть в формате 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" } } }