Отправка сообщений

Для отправки сообщения инициируется POST-запрос на адрес:

https://whatsgate.ru/api/v1/send

В теле запроса передается объект отправки сообщения.

Сообщение через API можно отправить двумя способами:

  1. Синхронно, т.е. ответ на запрос будет отправлен только после отправки сообщения, и в ответ вернется объект отправленного сообщения с идентификатором. При этом, на вебхук не приходит сообщение "Sent"
  2. Асинхронно, т.е. в ответе на запрос будет возвращен результат постановки в очередь, как правило это «ОК», а объект отправленного сообщения придет на вебхук, если он установлен. Тип сообщения - "Sent"

Тип сообщения "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>"
}
  • 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"
    }
  }
}
  • 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