@pipedream/zoom 0.3.6 → 0.5.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.
Files changed (36) hide show
  1. package/README.md +21 -64
  2. package/actions/add-meeting-registrant/add-meeting-registrant.mjs +157 -108
  3. package/actions/add-webinar-registrant/add-webinar-registrant.mjs +157 -108
  4. package/actions/create-meeting/create-meeting.mjs +1 -1
  5. package/actions/create-user/create-user.mjs +1 -1
  6. package/actions/delete-user/delete-user.mjs +1 -1
  7. package/actions/get-meeting-details/get-meeting-details.mjs +1 -1
  8. package/actions/get-webinar-details/get-webinar-details.mjs +36 -22
  9. package/actions/list-channels/list-channels.mjs +1 -1
  10. package/actions/list-past-meeting-participants/list-past-meeting-participants.mjs +25 -23
  11. package/actions/list-past-webinar-qa/list-past-webinar-qa.mjs +1 -1
  12. package/actions/list-user-call-logs/list-user-call-logs.mjs +31 -0
  13. package/actions/list-webinar-participants-report/list-webinar-participants-report.mjs +68 -0
  14. package/actions/send-chat-message/send-chat-message.mjs +1 -1
  15. package/actions/update-meeting/update-meeting.mjs +1 -1
  16. package/actions/update-webinar/update-webinar.mjs +1 -1
  17. package/actions/view-user/view-user.mjs +1 -1
  18. package/common/constants.mjs +9 -0
  19. package/common/utils.mjs +20 -0
  20. package/package.json +3 -3
  21. package/sources/common/common.mjs +2 -2
  22. package/sources/common/constants.mjs +106 -104
  23. package/sources/custom-event/custom-event.mjs +13 -10
  24. package/sources/meeting-created/meeting-created.mjs +16 -10
  25. package/sources/meeting-deleted/meeting-deleted.mjs +13 -8
  26. package/sources/meeting-ended/meeting-ended.mjs +20 -12
  27. package/sources/meeting-started/meeting-started.mjs +17 -11
  28. package/sources/meeting-updated/meeting-updated.mjs +16 -10
  29. package/sources/phone-event/phone-event.mjs +12 -10
  30. package/sources/recording-completed/recording-completed.mjs +28 -19
  31. package/sources/webinar-created/webinar-created.mjs +16 -10
  32. package/sources/webinar-deleted/webinar-deleted.mjs +14 -9
  33. package/sources/webinar-ended/webinar-ended.mjs +19 -13
  34. package/sources/webinar-started/webinar-started.mjs +16 -10
  35. package/sources/webinar-updated/webinar-updated.mjs +16 -10
  36. package/zoom.app.mjs +277 -42
package/README.md CHANGED
@@ -1,79 +1,36 @@
1
- # Zoom API Integrations
1
+ # Overview
2
+ The Zoom API lets you tap into a rich set of functionalities to enhance the video conferencing experience within your own app or workflow. With the Zoom API on Pipedream, you can automatically create meetings, manage users, send meeting notifications, and more, orchestrating these actions within a broader automation. This allows for seamless integration with other services, enabling both data collection and action triggers based on Zoom events.
2
3
 
3
- ### Integrate Zoom and thousands of applications with Pipedream. Free for developers.
4
+ **Pipedream [workflows](/workflows/) allow you to run any Node.js code that connects to the Zoom API**. Just [create a new workflow](https://pipedream.com/new), then add prebuilt Zoom [actions](/components#actions) (create a meeting, send a chat message, etc.) or [write your own code](/code/). These workflows can be triggered by HTTP requests, timers, email, or on any app-based event (new tweets, a Github PR, Zoom events, etc).
4
5
 
5
- ---
6
+ # Getting Started
6
7
 
7
- Pipedream is a serverless integration and compute platform. We provide a free, hosted platform that makes it easy to connect apps and develop, execute and maintain event-driven workflows.
8
+ 1. First, sign up for Pipedream at [https://pipedream.com](https://pipedream.com).
9
+ 2. Visit [https://pipedream.com/accounts](https://pipedream.com/accounts).
10
+ 3. Click the button labeled **Click Here to Connect an App**.
11
+ 4. Search for "Zoom" and select either **Zoom** or **Zoom Admin** ([see the differences below](#zoom-vs-zoom-admin-app)):
8
12
 
9
- **Key Features**:
13
+ This will open up a new window prompting you to authorize Pipedream's access to your Zoom account. Once you authorize access, you should see your Zoom account listed among your apps.
10
14
 
11
- - [Zoom API Event Sources](#github-api-event-sources) - Open source [components](https://github.com/PipedreamHQ/pipedream/tree/master/components) that emit events from Zoom
12
- - [Workflows](#workflows) - A sequence of linear steps - just Node.js code - triggered by a Zoom event
13
- - Serverless - No server or cloud resources to manage
14
- - [Free](#pricing) - No fees for individual developers (see [limits](https://docs.pipedream.com/limits/))
15
+ 1. [Create a new workflow](https://pipedream.com/new), [add a new step](/workflows/steps/), search for "Zoom" or "Zoom Admin". Once you've selected either app, you can choose to either "Run Node.js code" or select one of the prebuilt actions for performing common API operations.
16
+ 2. At this stage, you'll be asked to link the Zoom account you connected above, authorizing the request to the Zoom API with your credentials.
15
17
 
16
- <a href="https://pipedream.com/sources/new?app=zoom"><img src="https://i.ibb.co/m0bBsSL/deploy-clean.png" height="35"></a>
18
+ ## Zoom vs Zoom Admin app
17
19
 
18
- ## Zoom API Event Sources
20
+ Zoom users can be classified into two groups: non-admins and admins. Admins have account-level permissions that users do not, and Zoom has corresponding admin-level scopes that aren't relevant for normal users. Therefore, Pipedream exposes two apps — **Zoom** and **Zoom Admin** — to serve the two groups.
19
21
 
20
- - [Custom Events](https://pipedream.com/sources/new?app=zoom) - Build your own event source using one or multiple events ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/custom-event.js))
21
- - [Meeting Created](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a meeting is created where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/meeting-created.js))
22
- - [Meeting Deleted](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a meeting is deleted where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/meeting-deleted.js))
23
- - [Meeting Ended](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a meeting ends where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/meeting-ended.js))
24
- - [Meeting Started](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a meeting starts where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/meeting-started.js))
25
- - [Meeting Updated](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a meeting is updated where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/meeting-updated.js))
26
- - [Meeting Recording Completed](https://pipedream.com/sources?action=create&key=zoom-recording-completed&utm_source=github.com&utm_medium=referral&utm_campaign=zoom) - Emits an event each time a new recording completes for a meeting or webinar where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/recording-completed.js))
27
- - [Webinar Created](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a webinar is created where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/webinar-created.js))
28
- - [Webinar Deleted](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a webinar is deleted where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/webinar-deleted.js))
29
- - [Webinar Ended](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a webinar ends where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/webinar-ended.js))
30
- - [Webinar Started](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a webinar starts where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/webinar-started.js))
31
- - [Webinar Updated](https://pipedream.com/sources/new?app=zoom) - Emits an event each time a webinar is updated where you're the host ([code](https://github.com/PipedreamHQ/pipedream/blob/master/components/zoom/webinar-updated.js))
22
+ In the Zoom Marketplace, these apps are named [Pipedream](https://marketplace.zoom.us/apps/jGaV-kRrT3igAYnn-J5v2g), and [Pipedream for Zoom Admins](https://marketplace.zoom.us/apps/tZvUsiucR96SqtvfBsemXg), respectively.
32
23
 
33
- Event sources can also be deployed via the [Pipedream CLI](https://docs.pipedream.com/cli/reference/). Once installed, you can deploy an event source by running:
24
+ Non-admins have [permissions](https://marketplace.zoom.us/docs/guides/authorization/permissions#user-managed-scopes) to manage standard Zoom resources in their account: meetings, webinars, recordings, and more. **If you're a non-admin, you'll want to use the Zoom app**.
34
25
 
35
- ```bash
36
- pd deploy # prompts you to select a component and pass required options
37
- ```
26
+ Zoom admins have [permissions](https://marketplace.zoom.us/docs/guides/authorization/permissions#account-level-scopes) to manage account-level resources, like users and reports. They can also manage webinars and meetings across their organization. **If you're an admin and need to manage these resources via API, you'll want to use the Zoom Admin app**.
38
27
 
39
- ## Workflows
28
+ The [Zoom API docs on permissions](https://marketplace.zoom.us/docs/guides/authorization/permissions) provide detailed information on these permissions and their associated OAuth scopes.
40
29
 
41
- Workflows are a sequence of linear [steps](https://docs.pipedream.com/workflows/steps) - just Node.js code - triggered by an event (via event source, HTTP endpoint, or timer). Workflows make it easy to transform data and integrate with 300+ APIs from various apps and services.
30
+ # Example Use Cases
42
31
 
43
- - Trigger your workflow on any [Zoom event](https://pipedream.com/sources/new?app=github), a different event (e.g. [HTTP requests](https://docs.pipedream.com/workflows/steps/triggers/#http) or a [schedule](https://docs.pipedream.com/workflows/steps/triggers/#cron-scheduler)).
44
- - Add steps to run [Node.js code](https://docs.pipedream.com/workflows/steps/code/) (using virtually any npm package) and [pre-built actions](https://docs.pipedream.com/workflows/steps/actions/).
45
- - Steps are executed in the order they appear in your workflow.
46
- - Data is shared between steps via [step exports](https://docs.pipedream.com/workflows/steps/#step-exports).
32
+ - **Automated Meeting Scheduling and Notifications**: With Pipedream, you can create a workflow that listens for upcoming calendar events in Google Calendar. Once it detects a new event labeled "Zoom Meeting," it can trigger the Zoom API to create a meeting and then automatically send custom email notifications with the meeting details to all the attendees using SendGrid.
47
33
 
48
- Workflow code is [public by default](https://docs.pipedream.com/public-workflows/) so the community can discover and [copy them](https://docs.pipedream.com/workflows/copy/). Your workflow execution and event data is private.
34
+ - **Zoom Webinar Attendee Management**: Build a workflow where new sign-ups from an event management platform like Eventbrite trigger the addition of these attendees to a Zoom webinar. Post-webinar, send a follow-up email via Mailgun with a link to the webinar recording, which you can upload to a cloud storage platform like Dropbox.
49
35
 
50
- You can copy [this example workflow](https://pipedream.com/@tod/use-http-requests-to-trigger-a-workflow-p_6lCy5y/readme) to get started, or review some [community-developed workflows](https://pipedream.com/explore) to see what others are building.
51
-
52
- **Example Zoom Workflows**
53
-
54
- - [Save Zoom recordings to Amazon S3, then delete Zoom recording](https://pipedream.com/@dylburger/save-zoom-recordings-to-amazon-s3-p_PACKJG/readme)
55
-
56
- For a deeper introduction to Pipedream and event sources, see the [root `README` in this repo](/README.md), the [component API](/COMPONENT-API.md), or the [docs](https://docs.pipedream.com/apps/zoom/).
57
-
58
- ## Other Popular API Integrations
59
-
60
- - [Airtable](https://github.com/PipedreamHQ/pipedream/tree/master/components/airtable) ([deploy](https://pipedream.com/sources/new?app=airtable))
61
- - [AWS](https://github.com/PipedreamHQ/pipedream/tree/master/components/aws) ([deploy](https://pipedream.com/sources/new?app=aws))
62
- - [Dropbox](https://github.com/PipedreamHQ/pipedream/tree/master/components/dropbox) ([deploy](https://pipedream.com/sources/new?app=dropbox))
63
- - [Github](https://github.com/PipedreamHQ/pipedream/tree/master/components/github) ([deploy](https://pipedream.com/sources/new?app=github))
64
- - [Google Calendar](https://github.com/PipedreamHQ/pipedream/tree/master/components/google-calendar) ([deploy](https://pipedream.com/sources/new?app=google-calendar))
65
- - [Google Drive](https://github.com/PipedreamHQ/pipedream/tree/master/components/google-drive) ([deploy](https://pipedream.com/sources/new?app=google-drive))
66
- - [RSS](https://github.com/PipedreamHQ/pipedream/tree/master/components/rss) ([deploy](https://pipedream.com/sources/new?app=rss))
67
- - [Twitter](https://github.com/PipedreamHQ/pipedream/tree/master/components/twitter) ([deploy](https://pipedream.com/sources/new?app=twitter))
68
-
69
- ## Pricing
70
-
71
- Pipedream is currently free, subject to the [limits noted below](https://docs.pipedream.com/limits/). Paid tiers for higher volumes are coming soon.
72
-
73
- If you exceed any of these limits, please [reach out](https://docs.pipedream.com/support/).
74
-
75
- ## Found a Bug? Have a Feature to suggest?
76
-
77
- Before adding an issue, please search the [existing issues](https://github.com/PipedreamHQ/pipedream/issues) or [reach out to our team](https://docs.pipedream.com/support/) to see if a similar request already exists.
78
-
79
- If an issue exists, please [add a reaction](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github) or comment on your specific use case.
36
+ - **Meeting Analytics and Reporting**: Combine Zoom's meeting ended webhook with Pipedream's capabilities to create a workflow that captures meeting details upon conclusion. With this data, you can send a summary email to the host, update a Google Sheet with attendance information, and even push the data to a BI tool like Tableau for more in-depth analysis.
@@ -1,143 +1,192 @@
1
- // legacy_hash_id: a_zNiweO
2
- import { axios } from "@pipedream/platform";
1
+ import app from "../../zoom.app.mjs";
3
2
 
4
3
  export default {
5
4
  key: "zoom-add-meeting-registrant",
6
5
  name: "Add Meeting Registrant",
7
- description: "Registers a participant for a meeting.",
8
- version: "0.2.1",
6
+ description: "Registers a participant for a meeting. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/meetingRegistrantCreate)",
7
+ version: "0.3.1",
9
8
  type: "action",
10
9
  props: {
11
- zoom: {
12
- type: "app",
13
- app: "zoom",
14
- },
15
- meeting_id: {
16
- type: "string",
17
- description: "The meeting ID.",
18
- },
19
- occurrence_ids: {
20
- type: "string",
21
- description: "Occurrence IDs. You can find these with the meeting get API. Multiple values separated by comma.",
22
- optional: true,
10
+ app,
11
+ meetingId: {
12
+ propDefinition: [
13
+ app,
14
+ "meetingId",
15
+ ],
16
+ },
17
+ occurrenceIds: {
18
+ propDefinition: [
19
+ app,
20
+ "occurrenceIds",
21
+ ],
23
22
  },
24
23
  email: {
25
- type: "string",
26
- description: "A valid email address of the registrant.",
27
- },
28
- first_name: {
29
- type: "string",
30
- description: "Registrant's first name.",
31
- },
32
- last_name: {
33
- type: "string",
34
- description: "Registrant's last name.",
24
+ propDefinition: [
25
+ app,
26
+ "email",
27
+ ],
28
+ },
29
+ firstName: {
30
+ propDefinition: [
31
+ app,
32
+ "firstName",
33
+ ],
34
+ },
35
+ lastName: {
36
+ propDefinition: [
37
+ app,
38
+ "lastName",
39
+ ],
35
40
  },
36
41
  address: {
37
- type: "string",
38
- description: "Registrant's address.",
39
- optional: true,
42
+ propDefinition: [
43
+ app,
44
+ "address",
45
+ ],
40
46
  },
41
47
  city: {
42
- type: "string",
43
- description: "Registrant's city.",
44
- optional: true,
48
+ propDefinition: [
49
+ app,
50
+ "city",
51
+ ],
45
52
  },
46
53
  country: {
47
- type: "string",
48
- description: "Registrant's country.",
49
- optional: true,
54
+ propDefinition: [
55
+ app,
56
+ "country",
57
+ ],
50
58
  },
51
59
  zip: {
52
- type: "string",
53
- description: "Registrant's Zip/Postal code.",
54
- optional: true,
60
+ propDefinition: [
61
+ app,
62
+ "zip",
63
+ ],
55
64
  },
56
65
  state: {
57
- type: "string",
58
- description: "Registrant's State/Province.",
59
- optional: true,
66
+ propDefinition: [
67
+ app,
68
+ "state",
69
+ ],
60
70
  },
61
71
  phone: {
62
- type: "string",
63
- description: "Registrant's Phone number.",
64
- optional: true,
72
+ propDefinition: [
73
+ app,
74
+ "phone",
75
+ ],
65
76
  },
66
77
  industry: {
67
- type: "string",
68
- description: "Registrant's industry.",
69
- optional: true,
78
+ propDefinition: [
79
+ app,
80
+ "industry",
81
+ ],
70
82
  },
71
83
  org: {
72
- type: "string",
73
- description: "Registrant's Organization.",
74
- optional: true,
75
- },
76
- job_title: {
77
- type: "string",
78
- description: "Registrant's job title.",
79
- optional: true,
80
- },
81
- purchasing_time_frame: {
82
- type: "string",
83
- description: "This field can be included to gauge interest of webinar attendees towards buying your product or service.",
84
- optional: true,
85
- },
86
- role_in_purchase_process: {
87
- type: "string",
88
- description: "Role in Purchase Process.",
89
- optional: true,
90
- },
91
- no_of_employees: {
92
- type: "string",
93
- description: "Number of Employees.",
94
- optional: true,
84
+ propDefinition: [
85
+ app,
86
+ "org",
87
+ ],
88
+ },
89
+ jobTitle: {
90
+ propDefinition: [
91
+ app,
92
+ "jobTitle",
93
+ ],
94
+ },
95
+ purchasingTimeFrame: {
96
+ propDefinition: [
97
+ app,
98
+ "purchasingTimeFrame",
99
+ ],
100
+ },
101
+ roleInPurchaseProcess: {
102
+ propDefinition: [
103
+ app,
104
+ "roleInPurchaseProcess",
105
+ ],
106
+ },
107
+ noOfEmployees: {
108
+ propDefinition: [
109
+ app,
110
+ "noOfEmployees",
111
+ ],
95
112
  },
96
113
  comments: {
97
- type: "string",
98
- description: "A field that allows registrants to provide any questions or comments that they might have.",
99
- optional: true,
114
+ propDefinition: [
115
+ app,
116
+ "comments",
117
+ ],
118
+ },
119
+ customQuestions: {
120
+ propDefinition: [
121
+ app,
122
+ "customQuestions",
123
+ ],
100
124
  },
101
- custom_questions: {
102
- type: "any",
103
- description: "Custom questions.",
104
- optional: true,
125
+ },
126
+ methods: {
127
+ addMeetingRegistrant({
128
+ meetingId, ...args
129
+ } = {}) {
130
+ return this.app.create({
131
+ path: `/meetings/${meetingId}/registrants`,
132
+ ...args,
133
+ });
105
134
  },
106
135
  },
107
- async run({ $ }) {
108
- //See the API docs here: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingregistrantcreate
109
- const config = {
110
- method: "post",
111
- url: `https://api.zoom.us/v2/meetings/${this.meeting_id}/registrants`,
136
+ async run({ $: step }) {
137
+ const {
138
+ meetingId,
139
+ occurrenceIds,
140
+ email,
141
+ firstName,
142
+ lastName,
143
+ address,
144
+ city,
145
+ country,
146
+ zip,
147
+ state,
148
+ phone,
149
+ industry,
150
+ org,
151
+ jobTitle,
152
+ purchasingTimeFrame,
153
+ roleInPurchaseProcess,
154
+ noOfEmployees,
155
+ comments,
156
+ customQuestions,
157
+ } = this;
158
+
159
+ const response = await this.addMeetingRegistrant({
160
+ step,
161
+ meetingId,
112
162
  params: {
113
- occurrence_ids: this.occurrence_ids,
163
+ occurrence_ids: occurrenceIds,
114
164
  },
115
165
  data: {
116
- email: this.email,
117
- first_name: this.first_name,
118
- last_name: this.last_name,
119
- address: this.address,
120
- city: this.city,
121
- country: this.country,
122
- zip: this.zip,
123
- state: this.state,
124
- phone: this.phone,
125
- industry: this.industry,
126
- org: this.org,
127
- job_title: this.job_title,
128
- purchasing_time_frame: this.purchasing_time_frame,
129
- role_in_purchase_process: this.role_in_purchase_process,
130
- no_of_employees: this.no_of_employees,
131
- comments: this.comments,
132
- custom_questions: typeof this.custom_questions == "undefined"
133
- ? this.custom_questions
134
- : JSON.parse(this.custom_questions),
135
- },
136
- headers: {
137
- "Authorization": `Bearer ${this.zoom.$auth.oauth_access_token}`,
138
- "Content-Type": "application/json",
166
+ email,
167
+ first_name: firstName,
168
+ last_name: lastName,
169
+ address,
170
+ city,
171
+ country,
172
+ zip,
173
+ state,
174
+ phone,
175
+ industry,
176
+ org,
177
+ job_title: jobTitle,
178
+ purchasing_time_frame: purchasingTimeFrame,
179
+ role_in_purchase_process: roleInPurchaseProcess,
180
+ no_of_employees: noOfEmployees,
181
+ comments,
182
+ custom_questions: typeof(customQuestions) === "undefined"
183
+ ? customQuestions
184
+ : JSON.parse(customQuestions),
139
185
  },
140
- };
141
- return await axios($, config);
186
+ });
187
+
188
+ step.export("$summary", `Successfully added registrant to meeting with ID \`${response.id}\``);
189
+
190
+ return response;
142
191
  },
143
192
  };