diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 6827f449db..b047afb08e 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -3476,6 +3476,10 @@ paths: text: type: string description: The message text to be sent in the Teams card + card_block: + type: object + description: The card block to be sent in the Teams card + responses: '200': description: Activity processed successfully diff --git a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte index 4ca67f3029..e5595dc3a3 100644 --- a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte +++ b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte @@ -43,9 +43,11 @@ export let customScriptTemplate: string export let customHandlerKind: 'flow' | 'script' = 'script' + let initialSlackChannel: string | undefined = undefined + let initialTeamsChannel: string | undefined = undefined + let customHandlerSchema: Schema | undefined let slackHandlerSchema: Schema | undefined - let teamsHandlerSchema: Schema | undefined let isFetching: boolean = false let teams_channels: ListAvailableTeamsChannelsResponse = [] @@ -201,10 +203,35 @@ } } + let lastHandlerSelected: 'slack' | 'teams' | 'custom' | undefined = undefined + + $: { + if (lastHandlerSelected !== handlerSelected) { + lastHandlerSelected = handlerSelected; + updateHandlerExtraArgs(); + } + } + + function updateHandlerExtraArgs() { + if (handlerSelected === 'slack' && initialSlackChannel) { + handlerExtraArgs['channel'] = initialSlackChannel; + } else if (handlerSelected === 'teams' && initialTeamsChannel) { + handlerExtraArgs['channel'] = initialTeamsChannel; + } else { + handlerExtraArgs['channel'] = undefined; + } + connectionTestJob = undefined; + } + $: { if ($workspaceStore) { loadSlackResources() loadTeamsResources() + if (handlerSelected === 'slack') { + initialSlackChannel = handlerExtraArgs['channel'] + } else if (handlerSelected === 'teams') { + initialTeamsChannel = handlerExtraArgs['channel'] + } } } @@ -229,6 +256,7 @@ $: handlerPath && isSlackHandler(handlerPath) && + !isTeamsHandler(handlerPath) && loadHandlerScriptArgs(handlerPath, [ 'path', 'workspace_id', @@ -245,31 +273,10 @@ 'email', 'slack' ]).then((schema) => (slackHandlerSchema = schema)) - - $: handlerPath && - isTeamsHandler(handlerPath) && - loadHandlerScriptArgs(handlerPath, [ - 'path', - 'workspace_id', - 'job_id', - 'is_flow', - 'schedule_path', - 'error', - 'error_started_at', - 'failed_times', - 'started_at', - 'success_times', - 'success_result', - 'success_started_at', - 'email', - 'teams' - ]).then((schema) => (teamsHandlerSchema = schema))
Teams Channel