Slow mode, banned patterns, slash-команды
Антиспам и быстрые ответы для композера. Все три фичи живут в одном месте конфига и часто работают парой.
Slow mode — антифлуд
Когда включён, после каждой отправки сообщения посетитель должен подождать seconds_per_message секунд перед следующей. Кнопка «Отправить» становится disabled, под композером появляется chip-таймер «Подождите ещё N с до следующего сообщения».
Время последней отправки персистится в localStorage (ключ sh-slow-mode-last-sent) — cooldown переживает refresh страницы.
SupportHub.identify(...)). Если у вас есть кабинет пользователя и вы знаете, кто пишет — логичнее не ограничивать.| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| advanced.slow_mode.enabled | boolean | false | Включить/выключить. |
| advanced.slow_mode.seconds_per_message | number (1–300) | 3 | Минимальный интервал между сообщениями. Для типичной поддержки 3–10 сек норм; для очень открытого виджета на публичном сайте — 30–60 сек. |
| advanced.slow_mode.anonymous_only | boolean | true | Применять только к неавторизованным посетителям (тех, кто не прошёл через SupportHub.identify(...)). Если у вас есть кабинет пользователя и вы знаете, кто пишет — логичнее не ограничивать. |
Banned patterns — стоп-слова
Список регулярных выражений; перед отправкой сообщения композер прогоняет тело через них. Если хоть одно совпадает — send блокируется, под композером всплывает чип «Сообщение содержит запрещённые слова» (3 секунды и исчезает).
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| advanced.banned_patterns | string[] | [] | Массив regex-паттернов. Регистронезависимые, без слэшей — просто тело выражения. Невалидные regex'ы тихо пропускаются (на бэкенде дублирующая валидация). |
[
"хуй",
"пизд",
"\\b(money|cash|crypto)\\s+(transfer|wire)\\b",
"https?://(?!example\\.com)"
]Slash-команды
Когда посетитель пишет /refund или /help, виджет может развернуть это в шаблонный ответ. Полезно для:
- Самообслуживания — посетитель набирает
/orderи видит готовый текст «Подскажите номер заказа, проверим в течение 5 минут», который потом отправит как обычное сообщение. - Стандартных вопросов — операторы экономят время на типовых ответах, потому что половина «привет, у меня вопрос про X» оформляется через
/X.
/. Длина 1–50.| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| advanced.slash_commands[].trigger | string | — | Короткое имя команды, начинающееся с /. Длина 1–50. |
| advanced.slash_commands[].label | string | — | Подпись для будущего autocomplete-меню (1-200). |
| advanced.slash_commands[].body | string | — | Текст, на который заменяется сама команда при отправке (1-4000). |
[
{
"trigger": "/refund",
"label": "Запрос возврата",
"body": "Здравствуйте! Подскажите номер заказа и причину возврата — я проверю в течение 5 минут."
},
{
"trigger": "/order",
"label": "Статус заказа",
"body": "Подскажите номер вашего заказа — я найду его в системе."
}
]Как это видит посетитель
Если посетитель набирает в композере /refund #1234 и нажимает Enter, виджет:
- Узнаёт префикс
/refundв списке команд. - Заменяет тело сообщения на
"Здравствуйте! Подскажите номер заказа... #1234"(хвост после команды добавляется в конец). - Отправляет уже развёрнутый текст оператору. В тред улетает не
/refund #1234, а готовый запрос.