Files
clientsflow/Frontend/server/api/telegram/send.post.ts
2026-02-18 13:56:35 +07:00

37 lines
1.2 KiB
TypeScript

import { readBody } from "h3";
import { prisma } from "../../utils/prisma";
import { getAuthContext } from "../../utils/auth";
import { enqueueTelegramSend } from "../../queues/telegramSend";
export default defineEventHandler(async (event) => {
const auth = await getAuthContext(event);
const body = await readBody<{ threadId?: string; text?: string }>(event);
const threadId = (body?.threadId || "").trim();
const text = (body?.text || "").trim();
if (!threadId) throw createError({ statusCode: 400, statusMessage: "threadId is required" });
if (!text) throw createError({ statusCode: 400, statusMessage: "text is required" });
const thread = await prisma.omniThread.findFirst({
where: { id: threadId, teamId: auth.teamId, channel: "TELEGRAM" },
});
if (!thread) throw createError({ statusCode: 404, statusMessage: "thread not found" });
const msg = await prisma.omniMessage.create({
data: {
teamId: auth.teamId,
contactId: thread.contactId,
threadId: thread.id,
direction: "OUT",
channel: "TELEGRAM",
status: "PENDING",
text,
occurredAt: new Date(),
},
});
await enqueueTelegramSend({ omniMessageId: msg.id });
return { ok: true, messageId: msg.id };
});