Gratio повторяет структуру Green API: те же пути, имена методов, поля запросов и уведомлений, адреса @c.us и @g.us в WhatsApp. Приложение на Green API переключается заменой адреса и ключа.
Что поменять
- Адрес. Вместо
https://{префикс}.api.green-api.com—https://api.gratio.net. Путь прежний:/waInstance{idInstance}/{method}/{apiTokenInstance}; префикс/v3для MAX тоже работает. - Ключ.
idInstanceиapiTokenInstance— из кабинета Gratio, «Ключ API» в карточке канала. mediaUrlдляuploadFileиsendFileByUpload— тот жеhttps://api.gratio.net.- Тайм-аут на отправку — не меньше 60 секунд (см. ниже).
# было
base = f"https://{id_instance[:4]}.api.green-api.com/waInstance{id_instance}"
# стало
base = f"https://api.gratio.net/waInstance{id_instance}"
Переключаетесь на рабочем номере — сначала сверьте адреса чатов: getChats у Gratio и chatId в вашей базе должны почти полностью совпасть. Перед переключением очистите очередь (clearWebhooksQueue), чтобы не получить второй раз то, что уже пришло через Green.
Отличия
| Что | Как в Gratio |
|---|---|
| Отправка | синхронная, очереди исходящих нет: канал не на связи — сразу 400 not_authorized, повтор — на стороне приложения. showMessagesQueue всегда [] |
| Темп | Gratio сам выравнивает запросы к мессенджеру: отправка может ждать очереди до ~30 с; отказ — 429 или 469 с Retry-After |
| Ссылки на файлы | подписанные ссылки https://api.gratio.net/media/…, скачиваются без токена |
| Статусы исходящих | в WhatsApp — sent, delivered, read; в MAX и Telegram — sent и read |
lastIncomingMessages, lastOutgoingMessages |
журнал Gratio с момента подключения канала; старые сообщения — getChatHistory |
Вход и выход (qr, logout и др.) |
номер привязывают в кабинете, в API этих методов нет — 404 |
senderPhoneNumber в MAX |
всегда 0: MAX номер собеседника не показывает |
| Кнопки | sendButtons, sendInteractiveButtons — 501 not_supported |
| Номер MAX «в сети» | пока API работает с каналом и минуту после — иначе MAX не показывает «печатает» |
правила качества — отказ с причиной в code; пока номер подключён, пуши на телефон сотрудника не приходят |
Что есть сверх Green
| Возможность | Где |
|---|---|
Идемпотентная отправка clientMessageId |
Надёжная отправка без дублей |
getCapabilities — что умеет канал |
Возможности каналов |
| Подписки с подписью HMAC — копия ленты для второй системы | subscriptions |
Отравленные уведомления: getDeadNotifications, requeueDeadNotifications |
getDeadNotifications |
eventId — ключ события в каждом уведомлении |
Идентификаторы чатов и сообщений |
Догон после простоя без дублей и syncGap |
syncGap |
События групп groupEvent: добавили, исключили, вышел, админы, название |
groupEvent |
| Звонки MAX событиями; звонки со звуком, запись и живой звук | incomingCall и outgoingCall |
Альбомы: additionalFiles |
Файлы и альбомы |
| Реакции на чужие сообщения в группах MAX | Реакция |
| Поиск и вступление в каналы и группы (Telegram, MAX) | searchChats |
| Истории Telegram | Истории Telegram |
Архив, закрепы, deleteGroup (WhatsApp) |
archiveChat и unarchiveChat |
| Канал «Почта»: IMAP и SMTP с API почтовой программы | Почта через API |
Подробный профиль Telegram в getContactInfo |
getContactInfo |
Что дальше
- Шаг 2. Первый запрос — проверить новый ключ.
- Все методы — сверить методы, которыми пользуется ваше приложение.
