feat(paradiz): show AI disclosure only on first message per client

This commit is contained in:
OpenClaw Assistant
2026-03-02 23:46:25 +03:00
parent 705037db6c
commit d49445849b
2 changed files with 32 additions and 15 deletions

View File

@@ -281,12 +281,12 @@ async function askOpenClaw(payload) {
const hasContact = Boolean(store[userKey].phone || store[userKey].email || /телеграм|whatsapp|вотсап|вк|vk/i.test(userText));
if (!hasContact) {
writeLeadStore(store);
return { reply: 'Я ИИ-агент по бронированию «Парадиз». Подключу живого менеджера. Напишите, пожалуйста, телефон или e-mail и удобное время для связи.' };
return { reply: disclose('Подключу живого менеджера. Напишите, пожалуйста, телефон или e-mail и удобное время для связи.') };
}
const sent = await sendTelegramHumanLead(store[userKey]);
if (sent) store[userKey].human_sent_at = new Date().toISOString();
writeLeadStore(store);
return { reply: 'Я ИИ-агент по бронированию «Парадиз». Передала ваш запрос живому менеджеру, он свяжется с вами по указанному контакту.' };
return { reply: disclose('Передала ваш запрос живому менеджеру, он свяжется с вами по указанному контакту.') };
}
if (store[userKey].need_human) {
@@ -296,14 +296,22 @@ async function askOpenClaw(payload) {
const sent = await sendTelegramHumanLead(store[userKey]);
if (sent) store[userKey].human_sent_at = new Date().toISOString();
writeLeadStore(store);
return { reply: 'Я ИИ-агент по бронированию «Парадиз». Передала ваш контакт менеджеру — он свяжется с вами.' };
return { reply: disclose('Передала ваш контакт менеджеру — он свяжется с вами.') };
}
}
writeLeadStore(store);
const disclose = (text) => {
const t = String(text || '').trim();
if (store[userKey].ai_disclosed_at) return t;
store[userKey].ai_disclosed_at = new Date().toISOString();
writeLeadStore(store);
return `Я ИИ-агент по бронированию «Парадиз». ${t}`;
};
if (TECH_RE.test(userText)) {
return { reply: 'Я ИИ-агент по бронированию «Парадиз». ' + buildTechRedirectReply() };
return { reply: disclose(buildTechRedirectReply()) };
}
const reqBody = {
@@ -348,19 +356,18 @@ async function askOpenClaw(payload) {
const payloadOut = parseAssistantPayload(text);
if (!payloadOut.reply) return { silent: true };
const disclosure = 'Я ИИ-агент по бронированию «Парадиз». ';
if (!store[userKey].ai_disclosed_at) {
payloadOut.reply = disclosure + payloadOut.reply;
payloadOut.reply = `Я ИИ-агент по бронированию «Парадиз». ${payloadOut.reply}`;
store[userKey].ai_disclosed_at = new Date().toISOString();
writeLeadStore(store);
} else if (!/^я\s*ии-агент/i.test(payloadOut.reply)) {
payloadOut.reply = disclosure + payloadOut.reply;
} else {
payloadOut.reply = String(payloadOut.reply || '').replace(/^я\s*ии-агент[^.?!]*[.?!]?\s*/i, '').trim() || payloadOut.reply;
}
return payloadOut;
} catch (e) {
console.error(`[vk-endpoint] askOpenClaw error user=${userKey}: ${e.message}`);
return { reply: 'Я ИИ-агент по бронированию «Парадиз». Сейчас есть техническая задержка, но я на связи. Напишите, пожалуйста, даты и состав гостей — продолжу подбор.' };
return { reply: disclose('Сейчас есть техническая задержка, но я на связи. Напишите, пожалуйста, даты и состав гостей — продолжу подбор.') };
} finally {
clearTimeout(t);
}
@@ -388,7 +395,7 @@ const server = http.createServer(async (req, res) => {
} catch (e) {
console.error(`[vk-endpoint] inbound error: ${e.message}`);
res.writeHead(200, { 'content-type': 'application/json' });
res.end(JSON.stringify({ reply: 'Я ИИ-агент по бронированию «Парадиз». Произошла техническая ошибка. Напишите, пожалуйста, ещё раз одним сообщением: даты, гости и контакт для связи.' }));
res.end(JSON.stringify({ reply: 'Произошла техническая ошибка. Напишите, пожалуйста, ещё раз одним сообщением: даты, гости и контакт для связи.' }));
}
});