2
0

🐛 (webhook) Fix test request execution invalid timeout

This commit is contained in:
Baptiste Arnaud
2024-01-04 14:09:06 +01:00
parent 5266be1a51
commit f73bc46208
3 changed files with 39 additions and 19 deletions

View File

@ -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'
@ -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())
@ -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)
}
@ -96,6 +104,7 @@ export const executeWebhook =
resultId,
parentTypebotIds = [],
isCustomBody,
timeout,
}: {
webhook: Webhook
variables: Variable[]
@ -104,6 +113,7 @@ export const executeWebhook =
resultId?: string
parentTypebotIds: string[]
isCustomBody?: boolean
timeout?: number
}): Promise<WebhookResponse> => {
if (!webhook.url)
return {
@ -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 {

View File

@ -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'
@ -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 }
@ -198,8 +199,9 @@ 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
response: isNotDefined(env.CHAT_API_TIMEOUT)
? undefined
: params.timeout && params.timeout !== defaultTimeout
? Math.min(params.timeout, maxTimeout) * 1000
: isLongRequest
? maxTimeout * 1000

View File

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