import { uppzy } from "./uppzy-client.js";
import { createTicket } from "./support-client.js";
const SITE_ID = process.env.UPPZY_SITE_ID;
function wantsHuman(message) {
const normalized = message.toLowerCase();
return normalized.includes("agent") || normalized.includes("human");
}
function shouldEscalate(message, answer) {
return answer.confidence_level === "low" || wantsHuman(message);
}
export async function answerOrCreateTicket(req, res) {
const { customerId, email, message } = req.body;
const sessionId = `support_${customerId}`;
const answer = await uppzy(`/m2m/sites/${SITE_ID}/chat`, {
method: "POST",
body: {
session_id: sessionId,
email,
message,
response_language: "en",
},
});
if (shouldEscalate(message, answer)) {
const ticket = await createTicket({
customerId,
subject: "Assistant handoff",
summary: "A conversation needs support review.",
metadata: {
uppzy_session_id: answer.session_id,
uppzy_request_id: answer.request_id,
confidence_level: answer.confidence_level,
},
});
return res.json({
mode: "handoff",
ticket_id: ticket.id,
session_id: answer.session_id,
request_id: answer.request_id,
answer: answer.answer,
});
}
return res.json({
mode: "self_service",
session_id: answer.session_id,
request_id: answer.request_id,
answer: answer.answer,
confidence_level: answer.confidence_level,
});
}