diff --git a/integrations/paradiz-web/paradiz-web-agent-server.mjs b/integrations/paradiz-web/paradiz-web-agent-server.mjs index a8e9763..eb9e27f 100644 --- a/integrations/paradiz-web/paradiz-web-agent-server.mjs +++ b/integrations/paradiz-web/paradiz-web-agent-server.mjs @@ -46,6 +46,16 @@ function sanitizeForWebsite(text) { return cleaned; } +function isExternalActionRequest(text) { + const t = String(text || '').toLowerCase(); + const markers = [ + 'отправ', 'напиши в telegram', 'напиши в телеграм', 'telegram', 'телеграм', + 'whatsapp', 'ватсап', 'vk', 'вк', 'email', 'e-mail', 'почт', 'позвон', + 'создай задачу', 'api', 'webhook', 'уведомлен' + ]; + return markers.some((m) => t.includes(m)); +} + function json(res, code, payload) { res.writeHead(code, { 'Content-Type': 'application/json; charset=utf-8', @@ -65,7 +75,9 @@ function runAgent(userText) { 'Работай только по теме бронирования/подбора проживания для Парадиз.', 'Используй только логику скилла paradiz.', 'Не выполняй задачи вне бронирования и не меняй файлы.', - 'Если данных не хватает для брони — задай уточняющие вопросы.' + 'Если данных не хватает для брони — задай уточняющие вопросы.', + 'СТРОГО ЗАПРЕЩЕНО: любые внешние действия и коммуникации (Telegram/VK/WhatsApp/email/звонки/API-вызовы/отправка сообщений/создание задач/изменения в сторонних системах).', + 'Если пользователь просит внешнее действие, ответь только текстом: "Я передам информацию менеджеру, он свяжется с вами." и продолжи сбор данных по бронированию.' ].join(' '); const message = `${guardrail}\n\nОтвечай клиенту полезно и конкретно. Не используй NO_REPLY для веб-чата. Никогда не выводи служебные техстроки (аккаунт, модель, лимиты, codex-аккаунт).\n\nВопрос клиента: ${userText}`; @@ -117,6 +129,13 @@ const server = http.createServer(async (req, res) => { const question = String(parsed.question || '').trim(); if (!question) return json(res, 400, { ok: false, error: 'question_required' }); + if (isExternalActionRequest(question)) { + return json(res, 200, { + ok: true, + answer: 'Я передам информацию менеджеру, он свяжется с вами. А пока напишите, пожалуйста, даты заезда/выезда и состав гостей — подготовлю варианты и стоимость.' + }); + } + const answer = await runAgent(question); return json(res, 200, { ok: true, answer }); } catch (e) {