Получение уведомлений
Ниже представлено описание запросов для получения статусов отправки.
Есть несколько способов получения статусов сообщений:
Выполнить POST-запрос /receive.
Выполнить POST-запрос /receivebymsid
Настроить URL для получения статусов callback-методом.
Запросы для получение статусов
Для получения массива статусов необходимо выполнить следующий запрос:
Получение статусов сообщений
POST
URL: https://external-api.weasy.pro/receive.
Headers
Content-Type*
string
application/json
Authorization*
string
'nodeID:password' | base64
Request Body
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
Content-Type*
string
application/json
Authorization*
string
'nodeID:password' | base64
Request Body
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
Указывает, является ли статус сообщения финальным
Опция получения статусов подключается по запросу, обратитесь в службу технической поддержки или к вашему менеджеру.
Срок хранения статусов сообщений составляет 48 часов.
время получения статуса зависит от доступности абонента, качества сигнала мобильной сети и некоторых других технических параметров;
временем ожидания статуса считается промежуток времени от отправки до даты, указанной в параметре expirationDate; по истечении этого промежутка возвращается статус EXPIRED;
если оператор связи по тем или иным причинам не предоставляет код доставки, сообщение будет финализировано как недоставленное с кодом 127.
статус EXPIRED_READ по умолчанию не передаётся; если вам нужно получать этот статус, обратитесь в службу технической поддержки или к вашему менеджеру.
Примеры запросов:
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 --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