Skip to content

Commit

Permalink
🐛 (webhook) Fix test request execution invalid timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
baptisteArno committed Jan 4, 2024
1 parent 5266be1 commit f73bc46
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@ import {
} from '@typebot.io/schemas'
import { NextApiRequest, NextApiResponse } from 'next'
import got, { Method, Headers, HTTPError } from 'got'
import { byId, isEmpty, isWebhookBlock, omit } from '@typebot.io/lib'
import {
byId,
isEmpty,
isNotDefined,
isWebhookBlock,
omit,
} from '@typebot.io/lib'
import { parseAnswers } from '@typebot.io/lib/results'
import { initMiddleware, methodNotAllowed, notFound } from '@typebot.io/lib/api'
import { stringify } from 'qs'
Expand All @@ -32,6 +38,7 @@ import {
convertKeyValueTableToObject,
longReqTimeoutWhitelist,
} from '@typebot.io/bot-engine/blocks/integrations/webhook/executeWebhookBlock'
import { env } from '@typebot.io/env'

const cors = initMiddleware(Cors())

Expand Down Expand Up @@ -78,6 +85,7 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
resultId,
parentTypebotIds,
isCustomBody: block.options?.isCustomBody,
timeout: block.options?.timeout,
})
return res.status(200).send(result)
}
Expand All @@ -96,6 +104,7 @@ export const executeWebhook =
resultId,
parentTypebotIds = [],
isCustomBody,
timeout,
}: {
webhook: Webhook
variables: Variable[]
Expand All @@ -104,6 +113,7 @@ export const executeWebhook =
resultId?: string
parentTypebotIds: string[]
isCustomBody?: boolean
timeout?: number
}): Promise<WebhookResponse> => {
if (!webhook.url)
return {
Expand Down Expand Up @@ -184,7 +194,13 @@ export const executeWebhook =
: undefined,
body: body && !isJson ? body : undefined,
timeout: {
response: isLongRequest ? maxTimeout : defaultTimeout,
response: isNotDefined(env.CHAT_API_TIMEOUT)
? undefined
: timeout && timeout !== defaultTimeout
? Math.min(timeout, maxTimeout) * 1000
: isLongRequest
? maxTimeout * 1000
: defaultTimeout * 1000,
},
}
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
AnswerInSessionState,
} from '@typebot.io/schemas'
import { stringify } from 'qs'
import { isDefined, isEmpty, omit } from '@typebot.io/lib'
import { isDefined, isEmpty, isNotDefined, omit } from '@typebot.io/lib'
import { getDefinedVariables, parseAnswers } from '@typebot.io/lib/results'
import got, { Method, HTTPError, OptionsInit } from 'got'
import { resumeWebhookExecution } from './resumeWebhookExecution'
Expand All @@ -26,6 +26,7 @@ import {
defaultWebhookAttributes,
maxTimeout,
} from '@typebot.io/schemas/features/blocks/integrations/webhook/constants'
import { env } from '@typebot.io/env'

type ParsedWebhook = ExecutableWebhook & {
basicAuth: { username?: string; password?: string }
Expand Down Expand Up @@ -198,12 +199,13 @@ export const executeWebhook = async (
contentType?.includes('x-www-form-urlencoded') && body ? body : undefined,
body: body && !isJson ? (body as string) : undefined,
timeout: {
response:
params.timeout && params.timeout !== defaultTimeout
? Math.min(params.timeout, maxTimeout) * 1000
: isLongRequest
? maxTimeout * 1000
: defaultTimeout * 1000,
response: isNotDefined(env.CHAT_API_TIMEOUT)
? undefined
: params.timeout && params.timeout !== defaultTimeout
? Math.min(params.timeout, maxTimeout) * 1000
: isLongRequest
? maxTimeout * 1000
: defaultTimeout * 1000,
},
} satisfies OptionsInit

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,18 @@ const extractLinkedInputBlocks =
const linkedBotInputs =
previousLinkedTypebotBlocks.length > 0
? await Promise.all(
previousLinkedTypebotBlocks.map((linkedBot) =>
extractLinkedInputBlocks(
linkedTypebots.find((t) =>
'typebotId' in t
? t.typebotId === linkedBot.options?.typebotId
: t.id === linkedBot.options?.typebotId
) ?? typebot,
linkedTypebots
)(linkedBot.options?.groupId, 'forward')
)
previousLinkedTypebotBlocks.map((linkedBot) => {
const linkedTypebot = linkedTypebots.find((t) =>
'typebotId' in t
? t.typebotId === linkedBot.options?.typebotId
: t.id === linkedBot.options?.typebotId
)
if (!linkedTypebot) return []
return extractLinkedInputBlocks(linkedTypebot, linkedTypebots)(
linkedBot.options?.groupId,
'forward'
)
})
)
: []

Expand Down

1 comment on commit f73bc46

@vercel
Copy link

@vercel vercel bot commented on f73bc46 Jan 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

builder-v2 – ./apps/builder

app.typebot.io
builder-v2-typebot-io.vercel.app
builder-v2-git-main-typebot-io.vercel.app

Please sign in to comment.