import { NextRequest, NextResponse } from "next/server"; import { Service, ServiceConfig } from "./service"; export const facebookConfig: ServiceConfig = { entity: "facebook", table: "FacebookBot", displayName: "Facebook Connection", createFields: [ { name: "name", label: "Name", required: true, size: 12, }, { name: "description", label: "Description", size: 12, lines: 3, }, { name: "appId", label: "App ID", required: true }, { name: "appSecret", label: "App Secret", required: true }, { name: "pageId", label: "Page ID", required: true }, { name: "pageAccessToken", label: "Page Access Token", required: true, }, { name: "token", label: "Token", hidden: true, required: true, autogenerated: "token", }, { name: "verifyToken", label: "Verify Token", hidden: true, required: true, autogenerated: "token", }, ], updateFields: [ { name: "name", label: "Name", required: true, size: 12 }, { name: "description", label: "Description", size: 12, lines: 3, }, { name: "token", label: "Token", disabled: true, refreshable: true, }, { name: "verifyToken", label: "Verify Token", disabled: true, refreshable: true, }, { name: "appId", label: "App ID", required: true }, { name: "appSecret", label: "App Secret", required: true }, { name: "pageId", label: "Page ID", required: true }, { name: "pageAccessToken", label: "Page Access Token", required: true, }, ], displayFields: [ { name: "name", label: "Name", required: true, size: 12 }, { name: "description", label: "Description", required: true, size: 12, }, { name: "token", label: "Token", copyable: true, }, { name: "verifyToken", label: "Verify Token", copyable: true, }, { name: "appId", label: "App ID", required: true }, { name: "appSecret", label: "App Secret", required: true }, { name: "pageId", label: "Page ID", required: true, copyable: true, }, { name: "pageAccessToken", label: "Page Access Token", required: true, }, ], listColumns: [ { field: "name", headerName: "Name", flex: 1, }, { field: "description", headerName: "Description", flex: 2, }, { field: "updatedAt", headerName: "Updated At", valueGetter: (value: any) => new Date(value).toLocaleString(), flex: 1, }, ], }; const getAllBots = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const getOneBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const sendMessage = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const receiveMessages = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const registerBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const resetBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const requestCode = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const unverifyBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const refreshBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const createBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const deleteBot = async (req: NextRequest) => { console.log({ req }); return NextResponse.json({ response: "ok" }); }; const handleWebhook = async (req: NextRequest) => { console.log({ req }); const { searchParams } = req.nextUrl; const token = searchParams.get("hub.verify_token"); if (token !== process.env.FB_VERIFY_TOKEN) { // return NextResponse.error("Invalid token", { status: 403 }); } if (searchParams.get("hub.mode") === "subscribe") { const challenge = searchParams.get("hub.challenge"); console.log(token); console.log(challenge); return new Response(challenge, { status: 200 }) as NextResponse; } return NextResponse.json({ response: "ok" }); }; export const Facebook: Service = { getAllBots, getOneBot, sendMessage, receiveMessages, registerBot, resetBot, requestCode, unverifyBot, refreshBot, createBot, deleteBot, handleWebhook, };