Почта настраивается тем же методом setSettings, что и другие каналы, — ключами email…. Они есть только у канала «Почта», действуют сразу, без переподключения ящика. Текущие значения со всеми умолчаниями возвращает getSettings.
Ключи
| Ключ | По умолчанию | Что делает |
|---|---|---|
emailFolders |
"inbox,sent" |
о каких папках присылать уведомления: роли или названия папок через запятую. «Входящие» — всегда |
emailSkipBulk |
"no" |
"yes" — не присылать уведомления о рассылках и письмах сервисов (bulk, service). Сами письма остаются в ящике |
emailFromName |
"" |
имя в «От кого». Пусто — fromName из подключения |
emailSignature |
"" |
подпись под письмами. Пусто — без подписи |
emailSubject |
"" |
тема нового письма, когда её не передали. Пусто — первая строка текста |
emailReplyAll |
"no" |
"yes" — отвечать всем: в копию все из «Кому» и «Копии» письма, на которое отвечаете |
emailQuote |
"yes" |
цитировать письмо собеседника в ответе |
emailHtml |
"yes" |
добавлять к тексту html-версию письма. "no" — только текст |
emailAliases |
"" |
другие адреса этого ящика через запятую: письма с них — свои, а не собеседника |
emailForms |
[] |
правила заявок с форм сайта — см. Заявки с форм сайта |
Умолчания работают в sendMessage, sendEmail, replyEmail, forwardEmail и saveDraft. Поле в запросе сильнее настройки: signature, replyAll и quote в sendEmail заменяют emailSignature, emailReplyAll и emailQuote для этого письма.
Пример
Уведомления ещё и о папке «Заявки», без рассылок, своё имя отправителя, подпись и второй адрес ящика:
curl
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/setSettings/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"emailFolders": "inbox,sent,Заявки",
"emailSkipBulk": "yes",
"emailFromName": "Школа робототехники",
"emailSignature": "Алина, администратор\nШкола робототехники",
"emailAliases": "office@school.ru"
}'
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 = {
"emailFolders": "inbox,sent,Заявки",
"emailSkipBulk": "yes",
"emailFromName": "Школа робототехники",
"emailSignature": "Алина, администратор\nШкола робототехники",
"emailAliases": "office@school.ru",
}
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 = {
emailFolders: "inbox,sent,Заявки",
emailSkipBulk: "yes",
emailFromName: "Школа робототехники",
emailSignature: "Алина, администратор\nШкола робототехники",
emailAliases: "office@school.ru",
};
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 = [
'emailFolders' => 'inbox,sent,Заявки',
'emailSkipBulk' => 'yes',
'emailFromName' => 'Школа робототехники',
'emailSignature' => 'Алина, администратор
Школа робототехники',
'emailAliases' => 'office@school.ru',
];
$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}
getSettings после этого вернёт новые значения вместе с общими настройками канала:
{
"wid": "info@school.ru",
"typeInstance": "email",
"channel": "email",
"webhookUrl": "",
"webhookUrlToken": "",
"incomingWebhook": "yes",
"outgoingWebhook": "yes",
"outgoingMessageWebhook": "yes",
"outgoingAPIMessageWebhook": "yes",
"stateWebhook": "yes",
"incomingCallWebhook": "yes",
"groupEventsWebhook": "yes",
"emailFromName": "Школа робототехники",
"emailSignature": "Алина, администратор\nШкола робототехники",
"emailSubject": "",
"emailReplyAll": "no",
"emailQuote": "yes",
"emailHtml": "yes",
"emailSkipBulk": "yes",
"emailFolders": "inbox,sent,Заявки",
"emailAliases": "office@school.ru",
"emailForms": []
}
Как проверяются значения
| Ключи | Значение |
|---|---|
emailSkipBulk, emailReplyAll, emailQuote, emailHtml |
"yes" или "no"; true и false сохраняются как "yes" и "no" |
emailFolders |
роли (inbox, sent, spam, drafts, trash, archive, all) или названия папок — строкой через запятую или списком. Сохраняется строкой |
emailFromName, emailSignature, emailSubject, emailAliases |
строка до 2000 знаков |
emailForms |
список правил или одно правило — объект. Сохраняется в обычном виде: подробно — Заявки с форм сайта |
Неверное значение — 400 validation, ничего не сохраняется. Ключи email… у других каналов не действуют.
Как работают умолчания
- Подпись идёт под текстом после строки
--, как в почтовых программах, и в html-версии тоже. - Тема
emailSubject— только у нового письма. Ответ в цепочку получает «Re: …», пересылка — «Fwd: …». - Цитата — только в ответе на письмо собеседника; на своё письмо цитаты нет. Цитата — до 4000 знаков.
- Свои адреса
emailAliases: письмо с такого адреса приходит как своё, а «ответить всем» не добавляет их в копию. - Папки уведомлений указаны по названию — после renameFolder обновите
emailFolders. - Рассылки с
emailSkipBulk: "yes"не приходят уведомлениями, но видны в getMessages и searchMessages. Автоответы приходят всегда — с пометкойauto, см. Письмо.
Что дальше
- Заявки с форм сайта — правила
emailForms. - setSettings — общие настройки канала: вебхук, флаги уведомлений.
- sendEmail — поля письма, которые заменяют умолчания.
