30 lines
742 B
TypeScript
30 lines
742 B
TypeScript
|
|
import { publicProcedure } from '@/helpers/server/trpc'
|
||
|
|
import { TRPCError } from '@trpc/server'
|
||
|
|
import { env } from '@typebot.io/env'
|
||
|
|
import { z } from 'zod'
|
||
|
|
|
||
|
|
export const subscribePreviewWebhook = publicProcedure
|
||
|
|
.meta({
|
||
|
|
openapi: {
|
||
|
|
method: 'GET',
|
||
|
|
path: '/whatsapp/preview/webhook',
|
||
|
|
summary: 'WhatsApp',
|
||
|
|
},
|
||
|
|
})
|
||
|
|
.input(
|
||
|
|
z.object({
|
||
|
|
'hub.challenge': z.string(),
|
||
|
|
'hub.verify_token': z.string(),
|
||
|
|
})
|
||
|
|
)
|
||
|
|
.output(z.number())
|
||
|
|
.query(
|
||
|
|
async ({
|
||
|
|
input: { 'hub.challenge': challenge, 'hub.verify_token': token },
|
||
|
|
}) => {
|
||
|
|
if (token !== env.ENCRYPTION_SECRET)
|
||
|
|
throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Unauthorized' })
|
||
|
|
return Number(challenge)
|
||
|
|
}
|
||
|
|
)
|