@pipedream/zoom 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import zoom from "../../zoom.app.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "zoom-get-meeting-summary",
|
|
5
|
+
name: "Get Meeting Summary",
|
|
6
|
+
description: "Retrieve the summary of a meeting or webinar. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/Getameetingsummary)",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "action",
|
|
9
|
+
annotations: {
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
openWorldHint: true,
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
},
|
|
14
|
+
props: {
|
|
15
|
+
zoom,
|
|
16
|
+
// eslint-disable-next-line pipedream/props-label, pipedream/props-description
|
|
17
|
+
info: {
|
|
18
|
+
type: "alert",
|
|
19
|
+
alertType: "info",
|
|
20
|
+
content: `
|
|
21
|
+
- The host must have a Pro, Business, or higher subscription plan.
|
|
22
|
+
- For meetings - the host's Meeting Summary with AI Companion user setting must be enabled.
|
|
23
|
+
- For webinars - the host's Webinar Summary with AI Companion user setting must be enabled.
|
|
24
|
+
- End-to-End Encrypted (E2EE) meetings do not support summaries.
|
|
25
|
+
|
|
26
|
+
Learn more about [enabling or disabling AI Companion meeting summaries](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057960&_ics=1771446392860&irclickid=~ae~a521XQPMHICGKIJzGxnovBDKLGwCvzrhab340WULKDzsmda90).`,
|
|
27
|
+
},
|
|
28
|
+
meetingId: {
|
|
29
|
+
propDefinition: [
|
|
30
|
+
zoom,
|
|
31
|
+
"meetingId",
|
|
32
|
+
() => ({
|
|
33
|
+
type: "previous_meetings",
|
|
34
|
+
}),
|
|
35
|
+
],
|
|
36
|
+
description: "The meeting ID or meeting UUID to retrieve the AI summary for. Only past meetings are listed.",
|
|
37
|
+
optional: false,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
async run({ $: step }) {
|
|
41
|
+
const {
|
|
42
|
+
zoom,
|
|
43
|
+
meetingId,
|
|
44
|
+
} = this;
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
const summary = await zoom.getMeetingSummary({
|
|
48
|
+
step,
|
|
49
|
+
meetingId,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
step.export("$summary", `Successfully retrieved AI summary for meeting ${meetingId}`);
|
|
53
|
+
return summary;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
const code = error?.response?.data?.code ?? error?.data?.code ?? error?.code;
|
|
56
|
+
if (code === 3322) {
|
|
57
|
+
throw new Error(`No AI summary found for meeting "${meetingId}". Ensure the meeting has ended and AI Companion was enabled before the meeting started.`);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import constants from "../../common/constants.mjs";
|
|
2
|
+
import zoom from "../../zoom.app.mjs";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
key: "zoom-list-all-recordings",
|
|
6
|
+
name: "List All Recordings",
|
|
7
|
+
description: "List all cloud recordings for a user. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingsList)",
|
|
8
|
+
version: "0.0.1",
|
|
9
|
+
type: "action",
|
|
10
|
+
annotations: {
|
|
11
|
+
destructiveHint: false,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
readOnlyHint: true,
|
|
14
|
+
},
|
|
15
|
+
props: {
|
|
16
|
+
zoom,
|
|
17
|
+
// eslint-disable-next-line pipedream/props-label, pipedream/props-description
|
|
18
|
+
info: {
|
|
19
|
+
type: "alert",
|
|
20
|
+
alertType: "info",
|
|
21
|
+
content: `
|
|
22
|
+
- Must have a Pro or a higher plan.
|
|
23
|
+
- Must enable Cloud Recording on the user's account. Learn more about [enabling cloud recordings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063923&_ics=1771436993341&irclickid=~ae~a521XQPMHICGKIJzGxnovBDKLGwCvzrhab3431UMLKGzsjgd6) and [managing cloud recording settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065362&_ics=1771436993341&irclickid=~ae~a521XQPMHICGKIJzGxnovBDKLGwCvzrhab3431UMLKGzsjgd6).`,
|
|
24
|
+
},
|
|
25
|
+
userId: {
|
|
26
|
+
type: "string",
|
|
27
|
+
label: "User ID",
|
|
28
|
+
description: "The user ID or email address of the user. Use `me` to retrieve recordings for the current user.",
|
|
29
|
+
optional: true,
|
|
30
|
+
default: "me",
|
|
31
|
+
},
|
|
32
|
+
from: {
|
|
33
|
+
type: "string",
|
|
34
|
+
label: "From",
|
|
35
|
+
description: "Start date in `yyyy-MM-dd` UTC format. The maximum date range is a month. Defaults to the current date if not provided.",
|
|
36
|
+
optional: true,
|
|
37
|
+
},
|
|
38
|
+
to: {
|
|
39
|
+
type: "string",
|
|
40
|
+
label: "To",
|
|
41
|
+
description: "End date in `yyyy-MM-dd` UTC format.",
|
|
42
|
+
optional: true,
|
|
43
|
+
},
|
|
44
|
+
mc: {
|
|
45
|
+
type: "string",
|
|
46
|
+
label: "MC",
|
|
47
|
+
description: "Query metadata of recording if an On-Premise Meeting Connector was used for the meeting.",
|
|
48
|
+
optional: true,
|
|
49
|
+
},
|
|
50
|
+
trash: {
|
|
51
|
+
type: "boolean",
|
|
52
|
+
label: "Trash",
|
|
53
|
+
description: "If `true`, list recordings from trash.",
|
|
54
|
+
optional: true,
|
|
55
|
+
},
|
|
56
|
+
trashType: {
|
|
57
|
+
type: "string",
|
|
58
|
+
label: "Trash Type",
|
|
59
|
+
description: "The type of Cloud recording to retrieve from trash. Should be used together with **Trash**.",
|
|
60
|
+
optional: true,
|
|
61
|
+
options: constants.CLOUD_RECORD_TRASH_TYPE_OPTIONS,
|
|
62
|
+
},
|
|
63
|
+
max: {
|
|
64
|
+
propDefinition: [
|
|
65
|
+
zoom,
|
|
66
|
+
"max",
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
async run({ $: step }) {
|
|
71
|
+
const {
|
|
72
|
+
userId,
|
|
73
|
+
from,
|
|
74
|
+
to,
|
|
75
|
+
mc,
|
|
76
|
+
trash,
|
|
77
|
+
trashType,
|
|
78
|
+
max,
|
|
79
|
+
} = this;
|
|
80
|
+
|
|
81
|
+
const recordings = [];
|
|
82
|
+
|
|
83
|
+
const results = this.zoom.getResourcesStream({
|
|
84
|
+
resourceFn: this.zoom.listRecordings,
|
|
85
|
+
resourceFnArgs: {
|
|
86
|
+
step,
|
|
87
|
+
userId: userId || "me",
|
|
88
|
+
params: {
|
|
89
|
+
page_size: 300,
|
|
90
|
+
from,
|
|
91
|
+
to,
|
|
92
|
+
mc,
|
|
93
|
+
trash,
|
|
94
|
+
trash_type: trashType,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
resourceName: "meetings",
|
|
98
|
+
max,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
for await (const recording of results) {
|
|
102
|
+
recordings.push(recording);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
step.export("$summary", `Successfully retrieved ${recordings.length} recording${recordings.length === 1
|
|
106
|
+
? ""
|
|
107
|
+
: "s"}`);
|
|
108
|
+
|
|
109
|
+
return recordings;
|
|
110
|
+
},
|
|
111
|
+
};
|
package/common/constants.mjs
CHANGED
|
@@ -21,9 +21,21 @@ const MEETING_TYPES = [
|
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
|
|
24
|
+
const CLOUD_RECORD_TRASH_TYPE_OPTIONS = [
|
|
25
|
+
{
|
|
26
|
+
label: "List all meeting recordings from the trash",
|
|
27
|
+
value: "meeting_recordings",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: "List all individual recording files from the trash",
|
|
31
|
+
value: "recording_file",
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
|
|
24
35
|
export default {
|
|
25
36
|
BASE_URL,
|
|
26
37
|
VERSION_PATH,
|
|
27
38
|
MAX_RESOURCES,
|
|
28
39
|
MEETING_TYPES,
|
|
40
|
+
CLOUD_RECORD_TRASH_TYPE_OPTIONS,
|
|
29
41
|
};
|
package/package.json
CHANGED
package/zoom.app.mjs
CHANGED
|
@@ -323,9 +323,11 @@ export default {
|
|
|
323
323
|
...args,
|
|
324
324
|
});
|
|
325
325
|
},
|
|
326
|
-
listRecordings(
|
|
326
|
+
listRecordings({
|
|
327
|
+
userId = "me", ...args
|
|
328
|
+
} = {}) {
|
|
327
329
|
return this._makeRequest({
|
|
328
|
-
path:
|
|
330
|
+
path: `/users/${userId}/recordings`,
|
|
329
331
|
...args,
|
|
330
332
|
});
|
|
331
333
|
},
|
|
@@ -391,6 +393,14 @@ export default {
|
|
|
391
393
|
...args,
|
|
392
394
|
});
|
|
393
395
|
},
|
|
396
|
+
getMeetingSummary({
|
|
397
|
+
meetingId, ...args
|
|
398
|
+
}) {
|
|
399
|
+
return this._makeRequest({
|
|
400
|
+
path: `/meetings/${utils.doubleEncode(meetingId)}/meeting_summary`,
|
|
401
|
+
...args,
|
|
402
|
+
});
|
|
403
|
+
},
|
|
394
404
|
async *getResourcesStream({
|
|
395
405
|
resourceFn,
|
|
396
406
|
resourceFnArgs,
|