Перейти к содержанию

Как узнать количество сообщений, отправленных с инстанса?#

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

  1. Через входящие уведомления
  2. Через журнал отправленных сообщений

1. Через входящие уведомления#

Данный способ подразумевает создание счётчика на стороне интеграции пользователя для каждого инстанса.
Отправленные с инстанса сообщения можно отследить по двум типам уведомлений:

  1. Во входящем вебхуке типа outgoingAPIMessageReceived указываются только сообщения, которые были отправлены через API.

    Пример уведомления:

    {
        "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 
        ...
        }
    }
    
    2. Во входящем вебхуке о статусе исходящего сообщения 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
    },
]