feat(paradiz): show AI disclosure only on first message per client
This commit is contained in:
@@ -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: 'Произошла техническая ошибка. Напишите, пожалуйста, ещё раз одним сообщением: даты, гости и контакт для связи.' }));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user