Сообщество / ИИ

Обсуждение — ИИ чат-поддержка на сайте через свой VPS

Источник:
ИИ чат-поддержка на сайте через VPS: виджет и бэкенд

Умный чат снимает с поддержки поток типовых вопросов и отвечает клиентам круглосуточно. Соберём такую поддержку на VPS: бэкенд с ИИ, база знаний и виджет на сайт. ИИ-виджет отвечает мгновенно и круглосуточно, разгружая операторов от повторяющихся вопросов о доставке, тарифах и статусе заказа. Клиент получает ответ сразу, а не ждёт менеджера.

Подробнее →
P
polina_smena
Junior
Сообщения: 29
Репутация: 17
Дата регистрации:
28.09.2026
АВТОР ТЕМЫ01 нояб. 2026 г., 14:07 (GMT+3)
Прочитала с точки зрения того, кто сидит по ту сторону кнопки «позвать оператора». У меня ночные смены в саппорте (не здесь), и больше всего зацепило место про эскалацию.

В статье бот отвечает круглосуточно, а при неуверенности зовёт оператора или показывает форму заявки. Днём это понятно. А в три часа ночи оператором бывает один человек на всё, а то и никого. Клиент нажал кнопку, увидел «соединяем» и ждёт. По-моему, хуже этого только бот, который уверенно ответил неправильно.

Второе. В разделе про гибкость сказано, что диалог передаётся живому оператору с полной историей. Но в примере /ask принимает один text и возвращает один answer: ни сессии, ни сохранения переписки. Для минимального примера это нормально, просто историю придётся где-то хранить отдельно, иначе оператор получит клиента без контекста. Тогда первым делом он спросит «опишите проблему», и клиент начнёт заново с того же места, где застрял с ботом. Это самый частый повод для злых отзывов, которые я разбираю утром.

Отсюда вопрос к тем, кто такое собирал: что вы делаете с кнопкой ночью? Честно пишете «оператор будет с 9:00, оставьте контакт», скрываете кнопку или держите дежурного? И как отдаёте человеку историю: целиком, или бот сам делает короткую выжимку? Выжимке я бы, кстати, не очень доверяла, она может пересказать мимо сути.
0
nesterov
Junior
Сообщения: 46
Репутация: 35
Дата регистрации:
08.08.2026
01 нояб. 2026 г., 16:01 (GMT+3)

polina_smena писал:
историю придётся где-то хранить отдельно, иначе оператор получит клиента без контекста



Согласен. Добавлю, что с этим хранилищем стоит решить заранее, а не после первой жалобы.

В переписку с ботом люди пишут всё подряд: телефон, номер заказа, адрес, иногда пароль от личного кабинета, раз уж спросили «что не работает». Пока /ask ничего не запоминает, этого добра на сервере нет. Как только появляется таблица с сессиями, оно оседает там и попадает в бэкапы, а бэкапы обычно живут дольше и лежат дальше от глаз, чем основная база.

До того как прикручивать историю, я бы ответил на три вопроса. Сколько хранить: оператору утром нужна ночная переписка, а полугодовой архив, скорее всего, нет. Кто видит: оператор, все сотрудники или ещё и тот, кто разбирает логи модели. Как удалять: если запись чистится по сроку в базе, но остаётся в недельных копиях, это стоит понимать и учитывать.

Насчёт ночной кнопки мне ближе ваш первый вариант. Честное «ответим с 9:00, оставьте контакт» плюс уже сохранённая история. Утром оператор открывает заявку, видит, на чём клиент застрял, и пишет ему первым. Кнопка «соединяем», за которой никого нет, хуже честного ожидания. Тем более что клиент запомнит и её, и тишину после.
0
F
farid_tash
Junior
Сообщения: 14
Репутация: 5
Дата регистрации:
07.09.2026
01 нояб. 2026 г., 17:00 (GMT+3)

nesterov писал:
В переписку с ботом люди пишут всё подряд: телефон, номер заказа, адрес, иногда пароль от личного кабинета



К этому списку я бы добавил то, что у нас пишут, когда платят криптой. С картами у нас сложно, поэтому USDT для многих обычный рабочий способ. Человек перевёл, деньги не видны, он нервничает и вставляет в чат всё подряд: хеш транзакции, адрес кошелька, скриншот приложения целиком. Хеш и адрес ещё ладно, они и так видны в блокчейне. А на скриншоте бывает видно баланс, а иногда и открытая фраза восстановления, потому что человек не понял, что именно у него просят. Если кошелёк потом опустеет, такую переписку уже не удалишь задним числом.

Поэтому до вопроса «сколько хранить» я бы поставил ещё один: что вообще не записывать. Фильтр перед сохранением в историю — простая вещь. Если идут двенадцать или двадцать четыре слова подряд, похожие на сид-фразу, или шестнадцать цифр как у карты, бот не сохраняет это сообщение. Он отвечает: «Пожалуйста, никому не отправляйте это, даже нам. Удалите сообщение и смените доступ». Оператору утром достаточно знать, что клиент переводил и какой хеш, остальное ему не нужно.

Регулярки, конечно, всё не поймают, особенно картинки. Но лучше пусть бот лишний раз попросит человека не присылать лишнего, чем такая запись потом полгода лежит в недельных бэкапах )
0
K
kostya_gw
Junior
Сообщения: 24
Репутация: 13
Дата регистрации:
20.09.2026
01 нояб. 2026 г., 17:05 (GMT+3)

farid_tash писал:
до вопроса «сколько хранить» я бы поставил ещё один: что вообще не записывать



Согласен, только «записывать» происходит не в одном месте. Сегодня вечером рисовал себе схему такого бота, и точек записи там оказалось три.

Сайт → бэкенд с /ask → шлюз на несколько моделей → провайдер модели.

Первая точка — таблица с историей, про неё вы уже написали. Вторая — сам шлюз. Он почти всегда логирует запросы, чтобы считать токены и разбирать ошибки, и в лог может попасть всё тело сообщения целиком. Третья — внешний провайдер: что он хранит у себя, решаете уже не вы.

Поэтому фильтр на сид-фразы и номера карт я бы ставил не перед сохранением истории, а перед отправкой в шлюз, то есть до любой записи. Если моделей несколько, одно правило на входе шлюза удобнее, чем отдельная проверка в каждой интеграции. А в настройках шлюза стоит отдельно найти, можно ли не писать текст запросов, а только метаданные: модель, токены, время, код ответа. Для отладки этого обычно хватает.

Со скриншотами хуже, регулярка картинку не прочитает. Если модель принимает изображения, кошелёк с открытой фразой улетит провайдеру раньше любого фильтра. Я бы ночью вообще не пропускал картинки к модели: сохранял файл локально с коротким сроком жизни и отдавал оператору утром. Если, конечно, сохранять его вообще нужно.
0
A
arsen_evn
Junior
Сообщения: 5
Репутация: 4
Дата регистрации:
28.09.2026
01 нояб. 2026 г., 18:00 (GMT+3)

kostya_gw писал:
Со скриншотами хуже, регулярка картинку не прочитает.



С картинками я бы не просто закрывал вход, а сразу давал человеку, куда деть доказательство. У нас так: если карта не прошла и платишь криптой, первым делом скринишь приложение и ищешь, кому показать. Это почти рефлекс. Двоюродный брат в такой ситуации однажды отправил в чат магазина скрин целиком, вместе с балансом и именем, просто потому что поле для файла было прямо под рукой.

Если ночью картинку молча не принимают, человек либо злится, либо переписывает в текст всё подряд, и тогда это уже работа для фильтра, который предложил farid_tash. Поэтому вместо кнопки «прикрепить» я бы показывал маленькую форму: сеть, сумма, хеш, примерное время. Под ней одна строка: «Скриншот не нужен, этих четырёх полей достаточно, чтобы найти перевод». Тогда человеку не приходится гадать, что от него хотят.

С картами то же самое. Достаточно последних четырёх цифр и времени операции, а не фото экрана с выпиской.

И ещё один плюс: форму проще пропустить через фильтр перед шлюзом, чем свободный текст. Хеш проверяется по формату, сумма — число, а всё лишнее туда просто некуда вписать.
0