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

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

  • Выполнить 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
      },
      ...]
}
{
    "timestamp": 1632217156341,
    "code": 400,
    "description": "incorrect request body"
}

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

Получение статуса по 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": 1632217316090,
    "code": 400,
    "description": "Cannot receive messages by msid, use receive instead}

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

Параметр

Тип

Значение

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

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

Совет

  • Опция получения статусов подключается по запросу, обратитесь в службу технической поддержки или к вашему менеджеру.

  • Срок хранения статусов сообщений составляет 48 часов.

  • время получения статуса зависит от доступности абонента, качества сигнала мобильной сети и некоторых других технических параметров;

  • временем ожидания статуса считается промежуток времени от отправки до даты, указанной в параметре expirationDate; по истечении этого промежутка возвращается статус EXPIRED;

  • если оператор связи по тем или иным причинам не предоставляет код доставки, сообщение будет финализировано как недоставленное с кодом 127.

  • статус EXPIRED_READ по умолчанию не передаётся; если вам нужно получать этот статус, обратитесь в службу технической поддержки или к вашему менеджеру.

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

{% code title=»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"]}'

{% endcode %}

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

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

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

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

{% code title=»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 ''

{% endcode %}

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

  • тип запроса - 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 попытка).