Содержание

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

Команда отправки

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

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>"
}

Голосовое сообщение должно быть в формате 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