Каналы умеют разное: в MAX нет опросов через API, в WhatsApp правка живёт 15 минут, у почты нет реакций. Чтобы не показывать в интерфейсе лишнего, спросите канал, что он умеет.
getCapabilities
Спросите канал при запуске приложения и сохраните ответ:
curl
curl "$GRATIO_URL/waInstance$GRATIO_ID/getCapabilities/$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}/getCapabilities/{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}/getCapabilities/${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 . '/getCapabilities/' . 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 у канала MAX:
{"channel": "max", "integration": "unofficial", "transport": "websocket", "buttons": false,
"attachments": true, "send_files": true, "voice_in": true, "reactions": true, "edit": true,
"unsend": true, "quote": true, "typing": true, "read_receipts": true, "call_events": true,
"call_audio": false, "groups": true, "history": true, "contacts": true, "check_account": true,
"phone_visible": "no", "max_text_len": 4000, "write_first": "yes"}
| Поле | Что значит |
|---|---|
channel |
max, telegram, whatsapp, email |
integration |
unofficial — сеанс пользователя (MAX, Telegram, WhatsApp); official — стандартный протокол (почта: IMAP и SMTP) |
transport |
как Gratio связан с площадкой — для справки |
buttons |
кнопки в сообщениях (сейчас нет ни в одном канале — sendButtons отвечает 501) |
attachments, send_files |
приём и отправка файлов |
voice_in |
приём голосовых |
reactions, edit, unsend, quote, typing |
реакции, правка, «удалить у всех», ответ цитатой, «печатает» |
read_receipts |
статусы прочтения исходящих |
call_events |
звонки приходят событиями |
call_audio |
сервер Gratio может ответить на звонок, позвонить и передать звук — см. Звонки: как это работает |
groups |
создание групп и управление участниками |
history |
история чата с площадки |
contacts |
список чатов и контактов |
check_account |
поиск аккаунта по номеру |
phone_visible |
виден ли номер собеседника: yes, no, masked |
max_text_len |
предел длины текста |
write_first |
можно ли начать диалог первым: yes, with_consent, never |
Метод, которого канал не умеет, отвечает 501 not_supported.
Сводная таблица
| MAX | Telegram | Почта | ||
|---|---|---|---|---|
| Текст, символов | 4 000 | 4 096 | 65 536 | 100 000 |
| Файлы, голосовые | да | да | да | файлы |
| Ответ цитатой | да | да | да | ответ в цепочку |
| Правка своего | да | да | 15 минут | — |
| Удалить у всех | да | да | своё — 48 часов; админ группы — и чужое | удаление письма в ящике |
| Реакции, «печатает» | да | да | да | — |
| Статусы исходящих | sent, read |
sent, read |
sent, delivered, read |
failed, read |
| Геопозиция, контакт, опрос | — | да (опрос — только в группу) | да | — |
| Пересылка | — | да | да | пересылка писем |
| Список доступных реакций | — | да | да | — |
| Архив и закрепы | — | — | да | — |
| История чата | с сервера MAX, и до подключения | с сервера Telegram, и до подключения | с момента привязки | папки ящика |
| Поиск по номеру | да | если человек разрешил | да | — |
| Номер собеседника виден | нет | если открыл | да, кроме @lid |
— |
| Группы | да | да (супергруппы) | да, и deleteGroup |
— |
| События групп | да | да | — | — |
| Поиск и вступление в каналы и группы | да | да | — | — |
| Истории | — | да | — | — |
| События звонков | да | да | да | — |
| Звук звонков | если call_audio |
— | если call_audio |
— |
| Кнопки | — | — | — | — |
Канал Avito готовится к запуску: он отвечает на входящие (написать первым продавец не может), текст — до 1000 символов. Справка по нему появится вместе с запуском.
Что дальше
- Переход с Green API — если ваше приложение уже работает с Green API.
- Чат-бот на Python — первый сценарий интеграции с полным кодом.
