Получение уведомлений

Ниже представлено описание запросов для получения статусов отправки.

Есть несколько способов получения статусов сообщений:

  • Выполнить POST-запрос /receive.

  • Выполнить POST-запрос /receivebymsid

  • Настроить URL для получения статусов callback-методом.

Запросы для получение статусов

Для получения массива статусов необходимо выполнить следующий запрос:

Получение статусов сообщений

POST URL: https://external-api.weasy.pro/receive.

Headers

Name
Type
Description

Content-Type*

string

application/json

Authorization*

string

'nodeID:password' | base64

Request Body

Name
Type
Description

count*

integer

Количество сообщений, статусы которых нужно включить в ответ. Максимальное количество запрашиваемых статусов не должно превышать 1000.

{
    "timestamp": 1632217053017,
    "code": 200,
    "states": [
    {
         "@type": "state",
         "msid": "MSID сообщения",
         "status": "статус сообщения",
         "creationDate": "время генерации статуса",
         "errorCode": код ошибки,
         "final": true
      },
      {
         "@type": "state",
         "msid": "MSID сообщения",
         "status": "статус сообщения",
         "creationDate": "время генерации статуса",
         "errorCode": код ошибки,
         "final": false
      },
      ...]
}

Для получения статуса сообщения по идентификатору необходимо выполнить следующий запрос:

Получение статуса по id сообщения

POST https://external-api.weasy.pro/receivebymsid

Headers

Name
Type
Description

Content-Type*

string

application/json

Authorization*

string

'nodeID:password' | base64

Request Body

Name
Type
Description

msids*

integer

Перечень id сообщений, по которым необходимо получить статусы. Количество запрашиваемых статусов от 1 до 100.

{
    "timestamp": 1632215128266,
    "code": 200,
    "states": [
        {
            "@type": "state",
            "msid": "41937aa1-6322-1463-7134-aa0003464415",
            "status": "UNDELIVERED",
            "creationDate": 1632214638388,
            "properties": {},
            "totalParts": 0,
            "sentParts": 0,
            "errorCode": 6969,
            "final": true
        }
    ]
}

Параметры ответа:

Параметр
Тип
Значение

timestamp

timestamp

Время отправки сообщения в формате Unix Timestamp

code

integer

Код ответа

states

array

Массив со статусами сообщений. Последовательность сообщений в массиве соответствует их последовательности в запросе

Параметры объекта в массиве states:

Параметр
Тип
Значение

@type

string

Тип ответа (в запросах на получение статусов - state)

msid

string

UUID сообщения

status

string

Статус сообщения: - DELIVERED - доставлено. - UNDELIVERED - не доставлено. - READ - прочитано.

creationDate

timestamp

Дата формирования статуса

errorCode

integer

Код ошибки

final

boolean

Указывает, является ли статус сообщения финальным

Примеры запросов:

CURL
curl --location --request POST 'https://external-api.weasy.pro/receive' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic MTIzNDU6dGVzdA==' \
--data-raw '10'


curl --location --request POST 'https://external-api.weasy.pro/receivebymsid' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic MTIzNDU6dGVzdA==' \
--data-raw '{"msids":["41937aa1-6322-1463-7134-aa0003464415"]}'

Получение статусов методом callback

Чтобы воспользоваться сервисом HTTP Callback, вам потребуется сообщить нам адрес и порт вашего сервера, на который будут приходить статусы.

Сервис HTTP Callback периодически проверяет доступность вашего сервера, отправляя GET-запрос на адрес <host>/ping. Если ваш сервер доступен и возвращает ответ с кодом 200 OK, вам будут отправлены доступные на текущий момент статусы.

Пример запроса:

CURL
curl --location --request GET 'https://app.test/remote-api/whatsapp/ping' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic MTIzNDU6dGVzdA==' \
--header 'Cookie: XSRF-TOKEN=eyJpdiI6IjF4QUF5RENyUjF3YmlzQ3ZwSEE9PSIsInZhbHVlIjoiN0U2UUN3R2p0NThoWTF3QXU1VlJBa3h6clp0djdkamtUQWU4TDdDbU40NldndXlrcGhReVRpZkZCbm52aXdscjdaVWliY1NXaGtDUEFnMU5IbG9rMUE9PSIsIm1hYyI6IjQwNjUxZmYxMmY0MTMyYjkyMDMwODYzY2I2ZWY3NWVmODVjYTBmMDdlOWZhNGY1NzQ5ZDNiNzE4MmYxZTg5MDYifQ%3D%3D; laravel_session=eyJpdiI6InRwVkFqU2FcL200ZHBxWGczOEthQ1RBPT0iLCJ2YWx1ZSI6IlQ2UnpydnJ0SFhIemlMWFd2ZHBKWEJcLzlBSjhndUpGY3B6dktMSjNESXNQRVpaZWorRU9pR28wOHJrb0o0V0c2djZKSDJ5MkloNzJOQ1lLR0VDc1g4UT09IiwibWFjIjoiYzMzYWVjN2EyZDA5YjMzZTkxMmYyZWUyNjE4NjJmNGYxOWU4NWUzYjdmZTcxYzg3OTMwM2Q4NjYzYmIxYTYyYyJ9' \
--data-raw ''

Статусы будут передаваться на ваш сервер в запросе, который имеет следующую структуру:

  • тип запроса - POST;

  • URL:<host>:<port>/states;

  • Authorization: Basic base64(login:pass)

  • Content-Type - application/json

В качестве значений параметров <host> и <port> вам потребуется указать адрес и порт вашего сервера.

По умолчанию эндпоинт для получения статусов /states. Вы можете задать кастомное значение эндпоинта для получения статусов. Для этого необходимо вместе с адресом и портом вашего сервера указать необходимое название эндпоинта.

В теле запроса передаётся точно такой же JSON-объект, как в ответе на запрос статусов:

{
  "timestamp": "1551106300857",
  "states": [
    {
      "@type": "state",
      "msid": "43000aa1-1111-1111-0000-aa0007777777",
      "status": "UNDELIVERED",
      "creationDate": "1551106273415",
      "errorCode": "6969",
      "final": true
    }
  ]
}

В ответ на запрос ваш сервер должен вернуть код 200 OK или 202 (Accepted). Если ваш сервер вернёт другой код, будет предпринята повторная попытка отправки согласно заданным правилам. Для всех клиентов применяется правило переотправки и выглядит следующим образом: 10:100:1000 (10с - первая попытка, 100с - вторая, 1000 сек - 3 попытка).

Last updated