0
Interactive Microsoft Teams approval Approval
One script reply has been approved by the moderators Verified

Request interactive approval from Microsoft Teams

Created by hugo697 21 days ago Viewed 401 times
0
Submitted by hugo697 Bun
Verified 21 days ago
1
import * as wmill from "windmill-client";
2

3
type Enums = {
4
  [key: string]: string[];
5
};
6

7
type DefaultArgs = {
8
  [key: string]: any;
9
};
10

11
type ResApproval = {
12
  enums?: Enums;
13
  default_args?: DefaultArgs;
14
};
15

16
/**
17
 * Sends an interactive approval request via Teams and optionally returns dynamic enums and default arguments.
18
 *
19
 * [Enterprise Edition Only] To include form fields in the slack approval request, go to Advanced -> Suspend -> Form and define a form
20
 * Learn more at https://www.windmill.dev/docs/flows/flow_approval#form
21
 *
22
 * @param {string} teamName - Microsoft Teams "Team" Name.
23
 * @param {string} channelName - Teams Channel Name
24
 * @param {string} [message] - Optional custom message to include in the Teams approval request.
25
 * @param {string} [approver] - Optional user ID or name of the approver for the request.
26
 * @param {DefaultArgs} [defaultArgsJson] - Optional object defining or overriding the default arguments to a form field.
27
 * @param {Enums} [dynamicEnumsJson] - Optional object overriding the enum default values of an emum form field .
28
 *
29
 * @throws {Error} If the `wmill.requestInteractiveTeamsApproval` call fails.
30
 *
31
 * Example inputs:
32
 *   teamName: "Windmill",
33
 *   channelName: "General",
34
 *   message: "Please approve this request",
35
 *   approver: "approver123",
36
 *   defaultArgsJson: { foo: ["choice1", "choice2"], bar: ["optionA", "optionB"] },
37
 *   dynamicEnumsJson: { key1: "value1", key2: 42 }
38
 * );
39
 */
40
export async function main(
41
  teamName: string,
42
  channelName: string,
43
  message?: string,
44
  approver?: string,
45
  defaultArgsJson?: DefaultArgs,
46
  dynamicEnumsJson?: Enums
47
) {
48
  await wmill.requestInteractiveTeamsApproval({
49
    teamName,
50
    channelName,
51
    message,
52
    approver,
53
    defaultArgsJson,
54
    dynamicEnumsJson,
55
  });
56

57
  const returnObject: ResApproval = {};
58

59
  if (dynamicEnumsJson) returnObject.enums = dynamicEnumsJson;
60
  if (defaultArgsJson) returnObject.default_args = defaultArgsJson;
61

62
  return returnObject;
63
}
64