Меняет настройки канала: адрес вебхука, токен для него и какие уведомления присылать. Передайте только поля, которые меняете, — остальные останутся как есть. Настройки действуют сразу, без переподключения.
| Запрос | POST /waInstance{idInstance}/setSettings/{apiTokenInstance} |
| Тело | JSON |
| Каналы | MAX, Telegram, WhatsApp, почта |
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
webhookUrl |
string | нет | адрес вебхука http(s) на публичном хосте. Пустая строка — без вебхука: уведомления ждут в очереди |
webhookUrlToken |
string | нет | ваш секрет: Gratio передаёт его вебхуку в заголовке Authorization: Bearer … |
incomingWebhook |
string | нет | "yes" или "no" — см. таблицу ниже |
outgoingWebhook |
string | нет | то же |
outgoingMessageWebhook |
string | нет | то же |
outgoingAPIMessageWebhook |
string | нет | то же |
stateWebhook |
string | нет | то же |
incomingCallWebhook |
string | нет | то же |
groupEventsWebhook |
string | нет | то же |
Нужно хотя бы одно известное поле. Неизвестные поля Gratio пропускает.
Флаги уведомлений
| Флаг | Какие уведомления | По умолчанию |
|---|---|---|
incomingWebhook |
сообщения собеседников, их правки, удаления и реакции — incomingMessageReceived |
"yes" |
outgoingWebhook |
статусы исходящих — outgoingMessageStatus | "yes" |
outgoingMessageWebhook |
свои сообщения, отправленные не через API: с телефона, из приложения площадки, из почтовой программы — outgoingMessageReceived |
"yes" |
outgoingAPIMessageWebhook |
сообщения, отправленные через API, — outgoingAPIMessageReceived |
"yes" |
stateWebhook |
смена состояния канала — stateInstanceChanged | "yes" |
incomingCallWebhook |
звонки и их ход — incomingCall, outgoingCall, callStateChanged |
"yes" |
groupEventsWebhook |
события групп: состав, админы, название, удаление — groupEvent | "yes" |
Уведомление syncGap приходит всегда: флага у него нет.
Пример запроса
Включить вебхук с токеном:
curl
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"webhookUrl": "https://example.ru/gratio/hook",
"webhookUrlToken": "s3cr3t-hook-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}/setSettings/{TOKEN}"
payload = {
"webhookUrl": "https://example.ru/gratio/hook",
"webhookUrlToken": "s3cr3t-hook-token",
}
response = requests.post(url, json=payload, 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}/setSettings/${GRATIO_TOKEN}`;
const payload = {
webhookUrl: "https://example.ru/gratio/hook",
webhookUrlToken: "s3cr3t-hook-token",
};
const response = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(response.status, await response.json());
PHP
<?php
$base = getenv('GRATIO_URL') . '/waInstance' . getenv('GRATIO_ID');
$url = $base . '/setSettings/' . getenv('GRATIO_TOKEN');
$payload = [
'webhookUrl' => 'https://example.ru/gratio/hook',
'webhookUrlToken' => 's3cr3t-hook-token',
];
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$response = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;
print_r($response);
Пример ответа
Ответ 200 OK:
{"saveSettings": true}
С этой минуты уведомления идут на https://example.ru/gratio/hook, а receiveNotification отвечает 400 webhook_set.
Ещё примеры
Только входящие
Не присылать статусы и свои сообщения:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"outgoingWebhook": "no",
"outgoingMessageWebhook": "no",
"outgoingAPIMessageWebhook": "no"
}'
Вернуться к очереди
Пустой адрес снимает вебхук — уведомления снова забирают из очереди:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"webhookUrl": ""}'
Настройки ящика
У канала почты — свои ключи с префиксом email:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"emailFromName": "Школа робототехники",
"emailSkipBulk": "yes"
}'
Ошибки
| Код | code |
Когда | Что делать |
|---|---|---|---|
400 |
validation |
в теле нет ни одного известного поля; неверное значение ключа почты | проверить имена и значения полей |
400 |
bad_url |
webhookUrl ведёт во внутреннюю сеть: частный или локальный адрес |
дать публичный адрес |
Общие правила — в статье Ответы и ошибки.
Особенности каналов
Почта. Тем же методом настраиваются папки для уведомлений, имя отправителя, подпись, «ответить всем», цитата, правила заявок с форм: ключи emailFolders, emailSkipBulk, emailFromName, emailSignature, emailSubject, emailReplyAll, emailQuote, emailHtml, emailAliases, emailForms. Подробно — в статье Настройки ящика. У других каналов ключи email… пропускаются.
Что дальше
- Вебхук — заголовки, ответ и повторы доставки.
- subscriptions — несколько адресов для одного канала и подпись уведомлений.
- getSettings — проверить, что сохранилось.
