Для отправки сообщения инициируется 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"
}
}
}