64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
interface SendFacebookMessageTaskOptions {}
|
|
|
|
const sendFacebookMessageTask = async (
|
|
options: SendFacebookMessageTaskOptions,
|
|
): Promise<void> => {
|
|
console.log(options);
|
|
|
|
|
|
const message = await req.json();
|
|
|
|
const message = await req.json();
|
|
for (const entry of message.entry) {
|
|
for (const messaging of entry.messaging) {
|
|
const pageId = messaging.recipient.id;
|
|
const row = await db
|
|
.selectFrom("FacebookBot")
|
|
.selectAll()
|
|
.where("pageId", "=", pageId)
|
|
.executeTakeFirst();
|
|
|
|
console.log({ message });
|
|
const entry = message.entry[0];
|
|
console.log({ entry });
|
|
const messaging = entry?.messaging[0];
|
|
const pageId = messaging?.recipient?.id;
|
|
console.log({ pageId });
|
|
const row = await db
|
|
.selectFrom("FacebookBot")
|
|
.selectAll()
|
|
.where("pageId", "=", pageId)
|
|
.executeTakeFirst();
|
|
|
|
console.log({ row });
|
|
|
|
const endpoint = `https://graph.facebook.com/v19.0/${pageId}/messages`;
|
|
const inMessage = messaging?.message?.text;
|
|
const outgoingMessage = {
|
|
recipient: { id: messaging?.sender?.id },
|
|
message: { text: `"${inMessage}", right back at you!` },
|
|
messaging_type: "RESPONSE",
|
|
access_token: row?.pageAccessToken,
|
|
};
|
|
console.log({ outgoingMessage });
|
|
const response = await fetch(endpoint, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(outgoingMessage),
|
|
});
|
|
|
|
console.log({ response });
|
|
|
|
console.log(message);
|
|
const wu = await getWorkerUtils();
|
|
|
|
await wu.addJob("receive_facebook_message", message);
|
|
|
|
return NextResponse.json({ response: "ok" });
|
|
|
|
// withDb(async (db: AppDatabase) => {
|
|
// await notifyWebhooks(db, options);
|
|
// });
|
|
};
|
|
|
|
export default sendFacebookMessageTask;
|