import { WhatsAppWebhookRequestBody } from "indite-js/schemas/features/whatsapp"; import { isNotDefined } from "indite-js/lib"; import { resumeWhatsAppFlow } from "../whatsapp/resumeWhatsAppFlow"; type Props = { entry: WhatsAppWebhookRequestBody["entry"]; credentialsId: string; workspaceId: string; }; export const receiveMessage = async ({ entry, credentialsId, workspaceId, }: Props) => { const receivedMessage = entry.at(0)?.changes.at(0)?.value.messages?.at(0); if (isNotDefined(receivedMessage)) return { message: "No message found" }; const contactName = entry.at(0)?.changes.at(0)?.value?.contacts?.at(0)?.profile?.name ?? ""; const contactPhoneNumber = entry.at(0)?.changes.at(0)?.value?.messages?.at(0)?.from ?? ""; const phoneNumberId = entry.at(0)?.changes.at(0)?.value .metadata.phone_number_id; if (!phoneNumberId) return { message: "No phone number id found" }; return resumeWhatsAppFlow({ receivedMessage, sessionId: `wa-${phoneNumberId}-${receivedMessage.from}`, credentialsId, workspaceId, contact: { name: contactName, phoneNumber: contactPhoneNumber, }, }); };