Перейти к содержимому

getDeadNotifications

Обновлено 17 октября 2026

Отдаёт отравленные уведомления канала — те, что вебхук отвергал час подряд или 20 попыток. Gratio убирает такое уведомление из головы очереди, чтобы оно не задерживало остальные, и хранит его здесь. Починили обработчик — верните уведомления requeueDeadNotifications.

Запрос GET /waInstance{idInstance}/getDeadNotifications/{apiTokenInstance}
Тело нет
Каналы MAX, Telegram, WhatsApp, почта

В отравленные попадают только уведомления вебхука. В режиме очереди уведомление ждёт, пока вы его не удалите, — см. receiveNotification.

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

Посмотреть отравленные уведомления:

curl

curl "$GRATIO_URL/waInstance$GRATIO_ID/getDeadNotifications/$GRATIO_TOKEN"

Python

import os
import requests

BASE = f"{os.environ['GRATIO_URL']}/waInstance{os.environ['GRATIO_ID']}"
TOKEN = os.environ["GRATIO_TOKEN"]

url = f"{BASE}/getDeadNotifications/{TOKEN}"
response = requests.get(url, timeout=60)
print(response.status_code, response.json())

Node.js

const { GRATIO_URL, GRATIO_ID, GRATIO_TOKEN } = process.env;
const base = `${GRATIO_URL}/waInstance${GRATIO_ID}`;

const url = `${base}/getDeadNotifications/${GRATIO_TOKEN}`;
const response = await fetch(url);
console.log(response.status, await response.json());

PHP

<?php
$base = getenv('GRATIO_URL') . '/waInstance' . getenv('GRATIO_ID');
$url = $base . '/getDeadNotifications/' . getenv('GRATIO_TOKEN');

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 90,
]);
$response = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;
print_r($response);

Пример ответа

Ответ 200 OK — массив, старые первыми:

[
  {
    "receiptId": 41,
    "body": {
      "typeWebhook": "incomingMessageReceived",
      "instanceData": {"idInstance": 7100000001, "wid": "79990000001@c.us", "typeInstance": "v3", "channel": "max"},
      "timestamp": 1791823658,
      "idMessage": "117428955282341903",
      "eventId": "msg:8695836:117428955282341903",
      "senderData": {
        "chatId": "8695836", "chatName": "Мария", "chatType": "user",
        "sender": "8695836", "senderName": "Мария", "senderType": "user",
        "senderContactName": "", "senderPhoneNumber": 0
      },
      "messageData": {
        "typeMessage": "textMessage",
        "textMessageData": {"textMessage": "Здравствуйте! Есть места на субботу?"}
      }
    },
    "reason": "HTTP 500",
    "deadAt": 1791827381,
    "attempts": 17
  }
]

Отравленных нет — пустой массив [].

Поля ответа

Поле Тип Описание
receiptId integer номер уведомления в очереди
body object уведомление целиком — см. Формат уведомления
reason string причина последней неудачи — таблица ниже
deadAt integer когда уведомление стало отравленным, секунды Unix
attempts integer сколько попыток доставки было

Причины

reason Что случилось
HTTP 400, HTTP 500 и другие ваш сервер ответил этим кодом
ReadTimeout сервер не ответил за 30 секунд
ConnectError, ConnectTimeout не удалось соединиться: адрес недоступен, порт закрыт, сертификат не принят
internal_host адрес вебхука стал вести во внутреннюю сеть

Как разобрать

  1. Посмотрите reason и body: ошибка в обработчике на этом виде уведомления или сервер был недоступен.
  2. Почините обработчик.
  3. Нужные уведомления верните requeueDeadNotifications.
  4. Ненужное удалите по одному: deleteNotification с его receiptId.

За раз приходит до 100 отравленных уведомлений. Подтверждённые, отравленные и истёкшие уведомления Gratio хранит 7 дней, затем удаляет.

У подписок свои отравленные — счётчик dead в списке subscriptions.

Ошибки

Код code Когда Что делать
401 — неверный idInstance или токен взять ключ в кабинете

Что дальше

Была ли статья полезна?