Как узнать количество сообщений, отправленных с инстанса?#
Подсчёт количества отправленных сообщений с инстанса можно реализовать следующими способами:
1. Через входящие уведомления#
Данный способ подразумевает создание счётчика на стороне интеграции пользователя для каждого инстанса.
Отправленные с инстанса сообщения можно отследить по двум типам уведомлений:
-
Во входящем вебхуке типа
outgoingAPIMessageReceived
указываются только сообщения, которые были отправлены через API.Пример уведомления:
2. Во входящем вебхуке о статусе исходящего сообщения{ "typeWebhook": "outgoingAPIMessageReceived", // тип вебхука - уведомление по отправленному сообщению "instanceData": { "idInstance": 1101111111, "wid": "79876543210@c.us", "typeInstance": "whatsapp" }, "timestamp": 1727698517, "idMessage": "3EB0608D6A2901063D63", "senderData": { "chatId": "79001234567@c.us", "sender": "79876543210@c.us", "chatName": "Василиса", "senderName": "Иван", "senderContactName": "Иван Царевич" }, "messageData":{ // В зависимости от typeMessage = textMessage || imageMessage || videoMessage || documentMessage || audioMessage || locationMessage || contactMessage || extendedTextMessage || pollMessage || editedMessage || deletedMessage ... } }
outgoingMessageStatus
необходимо проверять, чтобы:- поле
sendByApi
равнялосьtrue
(указывает, что сообщение отправлено с API) -
поле
status
равнялосьsent
(для отслеживания того, что сообщение было отправлено)Если необходимо отслеживать именно доставленные сообщения, необходимо проверять поле
status
на значениеdelivered
. Этот статус означает, что сообщение пришло на телефон получателя.
Пример уведомления:
{ "typeWebhook": "outgoingMessageStatus", // тип вебхука - уведомление по отправленному сообщению "chatId": "79876543210@c.us", "instanceData": { "idInstance": 1101111111, "wid": "77654321098@c.us", "typeInstance": "whatsapp" }, "timestamp": 1727698517, "idMessage": "3EB0608D6A2901063D63", "status": "delivered", // статус сообщения "sendByApi": true // поле указывающее на отправку сообщения с API }
- поле
2. Через журнал отправленных сообщений#
Данный способ подразумевает использование метода lastOutgoingMessages.
Время в минутах можно задать в параметрах запроса. После получения списка сообщений из данного метода необходимо произвести подсчёт сообщений которые имеют:
- поле
sendByApi
со значениемtrue
(указывает, что сообщение отправлено с API) - поле
status
со значениемsent
/delivered
/read
, для отслеживания того, что сообщение как минимум было отправлено илиdelivered
/read
- для сообщения доставленного или прочитанного на устройстве.
Пример списка сообщений:
[
{
"type": "outgoing",
"idMessage": "BAE5143000000000",
"timestamp": 1706761454,
"typeMessage": "textMessage",
"chatId": "79876543210@c.us",
"textMessage": "Спасибо, что обратились к нам!",
"statusMessage": "delivered", // Статус отправленного сообщения
"sendByApi": true // Сообщение отправлено с API
},
{
"type": "outgoing",
"idMessage": "BAE5143000000000",
"timestamp": 1706761345,
"typeMessage": "textMessage",
"chatId": "79876543210@c.us",
"textMessage": "Какой у вас вопрос?",
"statusMessage": "read", // Статус отправленного сообщения
"sendByApi": true // Сообщение отправлено с API
},
{
"type": "outgoing",
"idMessage": "BAE5143000000000",
"timestamp": 1706761256,
"typeMessage": "textMessage",
"chatId": "79876543210@c.us",
"textMessage": "Ваш заказ в пути!",
"statusMessage": "sent", // Статус отправленного сообщения
"sendByApi": true // Сообщение отправлено с API
},
{
"type": "outgoing",
"idMessage": "BAE5143000000000",
"timestamp": 1706761234,
"typeMessage": "textMessage",
"chatId": "79876543210@c.us",
"textMessage": "Здравствуйте!",
"statusMessage": "sent",
"sendByApi": false // Сообщение НЕ отправлено с API
},
]