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

Настройки окна

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

Чат на сайте настраивается тем же методом setSettings, что и другие каналы, — ключами site…. Те же настройки есть в кабинете, в карточке канала. Текущие значения со всеми умолчаниями возвращает getSettings.

Настройки доходят до окна за секунды: окно берёт их при открытии. Кнопку чата сайты кешируют до 2 минут.

Пример

Название, цвет, кнопка с подписью слева, часы работы:

curl

curl -X POST "$GRATIO_URL/v1/instances/$GRATIO_ID/setSettings" \
  -H "Authorization: Bearer $GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "siteTitle": "Школа робототехники",
    "siteColor": "#F4513C",
    "sitePosition": "left",
    "siteLauncher": "label",
    "siteLauncherText": "Задать вопрос",
    "siteHours": {
      "timezone": "Europe/Moscow",
      "mon": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "tue": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "wed": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "thu": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "fri": [
        [
          "09:00",
          "18:00"
        ]
      ],
      "sat": [
        [
          "10:00",
          "15:00"
        ]
      ]
    }
  }'

Python

import os
import requests

BASE = f"{os.environ['GRATIO_URL']}/v1/instances/{os.environ['GRATIO_ID']}"
HEADERS = {"Authorization": f"Bearer {os.environ['GRATIO_TOKEN']}"}

url = f"{BASE}/setSettings"
payload = {
    "siteTitle": "Школа робототехники",
    "siteColor": "#F4513C",
    "sitePosition": "left",
    "siteLauncher": "label",
    "siteLauncherText": "Задать вопрос",
    "siteHours": {
        "timezone": "Europe/Moscow",
        "mon": [["09:00", "18:00"]],
        "tue": [["09:00", "18:00"]],
        "wed": [["09:00", "18:00"]],
        "thu": [["09:00", "18:00"]],
        "fri": [["09:00", "18:00"]],
        "sat": [["10:00", "15:00"]],
    },
}
response = requests.post(url, json=payload, headers=HEADERS, timeout=60)
print(response.status_code, response.json())

Node.js

const { GRATIO_URL, GRATIO_ID, GRATIO_TOKEN } = process.env;
const base = `${GRATIO_URL}/v1/instances/${GRATIO_ID}`;
const auth = { Authorization: `Bearer ${GRATIO_TOKEN}` };

const url = `${base}/setSettings`;
const payload = {
  siteTitle: "Школа робототехники",
  siteColor: "#F4513C",
  sitePosition: "left",
  siteLauncher: "label",
  siteLauncherText: "Задать вопрос",
  siteHours: {
    timezone: "Europe/Moscow",
    mon: [["09:00", "18:00"]],
    tue: [["09:00", "18:00"]],
    wed: [["09:00", "18:00"]],
    thu: [["09:00", "18:00"]],
    fri: [["09:00", "18:00"]],
    sat: [["10:00", "15:00"]],
  },
};
const response = await fetch(url, {
  method: "POST",
  headers: { ...auth, "Content-Type": "application/json" },
  body: JSON.stringify(payload),
});
console.log(response.status, await response.json());

PHP

<?php
$base = getenv('GRATIO_URL') . '/v1/instances/' . getenv('GRATIO_ID');
$auth = 'Authorization: Bearer ' . getenv('GRATIO_TOKEN');
$url = $base . '/setSettings';
$payload = [
    'siteTitle' => 'Школа робототехники',
    'siteColor' => '#F4513C',
    'sitePosition' => 'left',
    'siteLauncher' => 'label',
    'siteLauncherText' => 'Задать вопрос',
    'siteHours' => [
        'timezone' => 'Europe/Moscow',
        'mon' => [['09:00', '18:00']],
        'tue' => [['09:00', '18:00']],
        'wed' => [['09:00', '18:00']],
        'thu' => [['09:00', '18:00']],
        'fri' => [['09:00', '18:00']],
        'sat' => [['10:00', '15:00']],
    ],
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [$auth, '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}

Где стоит чат

Ключ По умолчанию Что делает
siteId при создании id сайта, только для чтения: другое значение — 400
siteEnabled "yes" "no" — чат снят с сайта: кнопки нет, окно не открывается
siteDomains [] домены, где окно встраивается, до 20: school.ru (и www), *.school.ru (и сам school.ru), http://school.local — явно. Кириллица — в punycode, маски над одним уровнем (*.ru) нельзя
siteAllowLocalhost "" до какой даты окно встраивается на localhost: дата ISO, не дальше 7 дней
siteHidePaths [] где кнопку не показывать: шаблоны путей с *, до 20 — /checkout*

Как выглядит

Ключ По умолчанию Что делает
siteTitle "" шапка окна и подпись компании. Пусто — название канала
siteColor "#263469" цвет окна и кнопки
sitePosition "right" right или left
siteOffsetX, siteOffsetY 20, 20 отступы кнопки от края, px
siteOffsetMobileX, siteOffsetMobileY 12, 12 отступы на телефоне, px
siteLauncher "icon" кнопка: icon — значок, label — значок с подписью, hidden — без кнопки, окно открывают со страницы, см. JS API окна на сайте
siteLauncherText "Напишите нам" подпись кнопки при label
siteTheme "light" light, dark или auto — как в системе посетителя
siteAvatar "" аватар компании — id файла из uploadFile: часть ссылки urlFile после idInstance, …/upload/7100000001/5f2c8e1a9b3d4c7e6a0f1b2c/…
siteSound "no" звук нового сообщения в окне
siteFiles "yes" посетитель может прикладывать файлы
siteBranding "yes" метка «Работает на Gratio» внизу окна; только для чтения. У бесплатного канала метка есть всегда, в платном тарифе её нет. То же значение в setSettings пропускается, другое — 400

Тексты

Ключ По умолчанию Что делает
siteGreeting "Здравствуйте! Чем можем помочь? Ответим здесь же." первая строка окна
sitePlaceholder "Напишите сообщение" подсказка в поле ввода
siteQuickReplies [] стартовые подсказки посетителю, до 4 по 40 знаков
siteOperatorTitle "сотрудник" как подписаны люди — «Ольга, сотрудник» — и кнопка «Позвать сотрудника»
siteHandoff "auto" когда показывать «Позвать сотрудника»: auto — после первого ответа ИИ, always — всегда. Выключить нельзя
siteHandoffText "Позовите сотрудника, пожалуйста" реплика, которая приходит по этой кнопке, с action: "operator"

Часы и срок ответа

Ключ По умолчанию Что делает
siteHours "" часы работы: {"timezone": "Europe/Moscow", "mon": [["09:00", "18:00"]], …}. Пусто — окно не обещает срок
siteReplyTime "hour" обещанный срок ответа в рабочие часы: minutes — 15 минут, hour — час, day — сутки. По нему считается unanswered в getSiteStats

Мессенджеры

siteMessengers — кнопки «Другие способы связи» в окне и мессенджеры формы контакта, до 8, по порядку:

[
  {"channel": "max", "url": "https://max.ru/…"},
  {"channel": "telegram", "username": "robo_school"},
  {"channel": "vk", "group": "robo_school"},
  {"channel": "whatsapp", "phone": "79990000001"},
  {"channel": "phone", "phone": "79990000001"}
]

У Telegram вместо username можно указать bot.

Согласие

Ключ По умолчанию Что делает
siteConsent "notice" notice — без галочки: строка уведомления под полем ввода и у кнопки формы; contact — галочка в формах с контактом; chat — галочка до первой реплики; off — ни галочки, ни строки
siteConsentLabel "" строка уведомления или подпись у галочки. Пусто — по режиму: «Отправляя сообщения в этот чат, вы принимаете политику обработки персональных данных» или «Согласен на обработку персональных данных»
siteConsentText "" полный текст согласия
sitePolicyUrl "" политика обработки персональных данных, только https
  • notice документа не требует. Слова «политику обработки персональных данных» в строке — ссылка на sitePolicyUrl, без неё — на текст siteConsentText; без обоих — строка без ссылки, с названием компании.
  • contact и chat — режимы с галочкой — требуют siteConsentText и sitePolicyUrl. Запрос, который ставит такой режим без документа или стирает документ при таком режиме, — 400.
  • Журнал согласий. При notice Gratio пишет «уведомление принято» с первой репликой посетителя и с каждой формой с телефоном или почтой. Версия — n и 16 знаков отпечатка строки, текста и адреса политики. Сменили текст или политику — новая версия, при галочке посетители отмечают её заново.
  • Согласие приходит в уведомлениях — поле consent в Реплика с сайта и Ответ формой, журнал посетителя — в getVisitor.

Аналитика и хранение

Ключ По умолчанию Что делает
siteMetrika "" номер счётчика Яндекс Метрики: цели gratio_chat_open, gratio_chat_started, gratio_handoff, gratio_contact, gratio_messenger
siteDataLayer "no" те же события в dataLayer для Google Tag Manager
siteRetentionDays 1095 сколько дней хранить переписку посетителя после его последней активности: 30–3650

В целях нет персональных данных: ни текстов, ни полей форм.

Как проверяются значения

  • Неверное значение — 400 validation с именем ключа: «Неверная настройка — siteColor: …».
  • Неизвестный ключ site… — тоже 400.
  • Ключи site… есть только у канала «Чат на сайте».

Что дальше

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