30 lines
888 B
JavaScript
30 lines
888 B
JavaScript
import crypto from "crypto";
|
|
import { parseEvolutionWebhook } from "../services/evolutionParser.js";
|
|
import { resolveTenantId, processMessage } from "../services/pipeline.js";
|
|
|
|
export async function handleEvolutionWebhook(body) {
|
|
const parsed = parseEvolutionWebhook(body);
|
|
if (!parsed.ok) {
|
|
return { status: 200, payload: { ok: true, ignored: parsed.reason } };
|
|
}
|
|
|
|
const tenantId = await resolveTenantId({
|
|
chat_id: parsed.chat_id,
|
|
tenant_key: parsed.tenant_key,
|
|
to_phone: null,
|
|
});
|
|
|
|
await processMessage({
|
|
tenantId,
|
|
chat_id: parsed.chat_id,
|
|
from: parsed.chat_id.replace("@s.whatsapp.net", ""),
|
|
text: parsed.text,
|
|
provider: "evolution",
|
|
message_id: parsed.message_id || crypto.randomUUID(),
|
|
meta: { pushName: parsed.from_name, ts: parsed.ts, instance: parsed.tenant_key },
|
|
});
|
|
|
|
return { status: 200, payload: { ok: true } };
|
|
}
|
|
|