182 lines
4.3 KiB
TypeScript
182 lines
4.3 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { Service, ServiceConfig } from "./service";
|
|
|
|
export const facebookConfig: ServiceConfig = {
|
|
entity: "facebook",
|
|
table: "FacebookBot",
|
|
displayName: "Facebook Connections",
|
|
createFields: [
|
|
{ name: "name", type: "text", label: "Name", required: true },
|
|
{
|
|
name: "description",
|
|
type: "text",
|
|
label: "Description",
|
|
required: true,
|
|
},
|
|
{ name: "appId", type: "text", label: "App ID", required: true },
|
|
{ name: "appSecret", type: "text", label: "App Secret", required: true },
|
|
{ name: "pageId", type: "text", label: "Page ID", required: true },
|
|
{
|
|
name: "pageAccessToken",
|
|
type: "text",
|
|
label: "Page Access Token",
|
|
required: true,
|
|
},
|
|
],
|
|
updateFields: [
|
|
{ name: "name", type: "text", label: "Name", required: true },
|
|
{
|
|
name: "description",
|
|
type: "text",
|
|
label: "Description",
|
|
required: true,
|
|
},
|
|
{ name: "appId", type: "text", label: "App ID", required: true },
|
|
{ name: "appSecret", type: "text", label: "App Secret", required: true },
|
|
{ name: "pageId", type: "text", label: "Page ID", required: true },
|
|
{
|
|
name: "pageAccessToken",
|
|
type: "text",
|
|
label: "Page Access Token",
|
|
required: true,
|
|
},
|
|
],
|
|
displayFields: [
|
|
{ name: "name", type: "text", label: "Name", required: true },
|
|
{
|
|
name: "description",
|
|
type: "text",
|
|
label: "Description",
|
|
required: true,
|
|
},
|
|
{ name: "appId", type: "text", label: "App ID", required: true },
|
|
{ name: "appSecret", type: "text", label: "App Secret", required: true },
|
|
{ name: "pageId", type: "text", label: "Page ID", required: true },
|
|
{
|
|
name: "pageAccessToken",
|
|
type: "text",
|
|
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,
|
|
};
|