Whatsapp service updates
This commit is contained in:
parent
e22a8e8d98
commit
3da103c010
16 changed files with 151 additions and 36 deletions
|
|
@ -4,6 +4,7 @@ import {
|
|||
updateAction,
|
||||
deleteAction,
|
||||
selectAllAction,
|
||||
selectOneAction,
|
||||
} from "../actions/service";
|
||||
import { FieldDescription, Entity } from "./service";
|
||||
|
||||
|
|
@ -70,3 +71,14 @@ export function generateSelectAllAction(table: keyof Database) {
|
|||
return selectAllAction(table);
|
||||
};
|
||||
}
|
||||
|
||||
type GenerateSelectOneArgs = {
|
||||
table: keyof Database;
|
||||
id: string;
|
||||
};
|
||||
|
||||
export function generateSelectOneAction({ table, id }: GenerateSelectOneArgs) {
|
||||
return async () => {
|
||||
return selectOneAction({ table, id });
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ export type FieldDescription = {
|
|||
name: string;
|
||||
label: string;
|
||||
kind?: "text" | "phone" | "select" | "multi" | "qrcode";
|
||||
getValue?: (id: string) => Promise<string>;
|
||||
getValue?: (token: string) => Promise<string>;
|
||||
refreshInterval?: number;
|
||||
getOptions?: (formState: any) => Promise<SelectOption[]>;
|
||||
autogenerated?: "token";
|
||||
|
|
@ -70,15 +70,21 @@ export class Service {
|
|||
return NextResponse.json(row);
|
||||
}
|
||||
|
||||
async registerBot({
|
||||
params: { service, token },
|
||||
}: ServiceParams): Promise<NextResponse> {
|
||||
return NextResponse.error() as any;
|
||||
}
|
||||
|
||||
async sendMessage(
|
||||
req: NextRequest,
|
||||
{ params: { service, token } }: ServiceParams,
|
||||
): Promise<NextResponse> {
|
||||
const message = await req.json();
|
||||
const json = await req.json();
|
||||
const worker = await getWorkerUtils();
|
||||
await worker.addJob(`${service}/send-${service}-message`, {
|
||||
token,
|
||||
message,
|
||||
...json,
|
||||
});
|
||||
|
||||
return NextResponse.json({ response: "ok" });
|
||||
|
|
@ -88,7 +94,9 @@ export class Service {
|
|||
req: NextRequest,
|
||||
{ params: { service, token } }: ServiceParams,
|
||||
): Promise<NextResponse> {
|
||||
console.log("INTO receiveMessage");
|
||||
const message = await req.json();
|
||||
console.log({ message });
|
||||
const worker = await getWorkerUtils();
|
||||
await worker.addJob(`${service}/receive-${service}-message`, {
|
||||
token,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,35 @@
|
|||
import { Service } from "./service";
|
||||
import { NextResponse } from "next/server";
|
||||
import { db } from "bridge-common";
|
||||
import { revalidatePath } from "next/cache";
|
||||
import { Service, ServiceParams } from "./service";
|
||||
|
||||
export class Whatsapp extends Service {}
|
||||
export class Whatsapp extends Service {
|
||||
async getBot({ params: { token } }: ServiceParams) {
|
||||
const row = await db
|
||||
.selectFrom("WhatsappBot")
|
||||
.selectAll()
|
||||
.where("token", "=", token as string)
|
||||
.executeTakeFirstOrThrow();
|
||||
const id = row.id;
|
||||
const url = `${process.env.BRIDGE_WHATSAPP_URL}/api/bots/${id}`;
|
||||
const result = await fetch(url, { cache: "no-store" });
|
||||
console.log({ result1: result });
|
||||
const json = await result.json();
|
||||
|
||||
await db
|
||||
.updateTable("WhatsappBot")
|
||||
.set({ verified: json.verified })
|
||||
.where("id", "=", id)
|
||||
.execute();
|
||||
|
||||
revalidatePath(`/whatsapp/${id}`);
|
||||
|
||||
if (!json.verified) {
|
||||
const url = `${process.env.BRIDGE_WHATSAPP_URL}/api/bots/${id}/register`;
|
||||
const result = await fetch(url, { method: "POST", cache: "no-store" });
|
||||
console.log({ result2: result });
|
||||
}
|
||||
|
||||
return NextResponse.json(json);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue