Skip to main content

Hi community! I am running into problems with zoom trigger. There are multiple video URLs coming from Zoom, but none of them has a way to determine which version it is. I want to pick only one version of the video and has to be the “speaker-view” only. How do I do that? Thanks in advanced.

Hey there @joelyi!

I replied to the ticket you opened about this topic, but I wanted to share here with others incase they run into the same issue.

The Zoom New Recording trigger will offer you many different types of recordings to access later in your Zap, but in such a way that it is difficult to download the exact one you want.  The solution I suggested was to use 2 Zaps in this configuration:

Zap 1: Zoom New Recording trigger => Google Sheet Create Many Row(s) action

Zap 2: Google Sheets New Row trigger => Filter by Zapier (Only continue if recording_type = active_speaker) => …

The data that Zoom is sending Zapier for these recordings are what we call Line Item Objects.  We treat those in a special way in Zapier, and actions that explicitly say they support them can do novel things.  In the case of Zap 1, it will write 1 row to the Google Sheet for each recording that Zoom sends.

Zap 2 will read from that Google Sheet and send each recording into the Filter step, only to continue for the specific recording you want -- in this case the one linked to the `active_speaker` value.  The actions that follow can then accomplish what you wish, with the specific file you wish!


Hi @joelyi 

I've just bumped into the same issue. I really didn’t want to use a google sheet that would become a data dumpster, so I came up with not a very elegant but seemingly working workaround I’d love to share.

Everything is done inside Zapier, no external apps.

 

Step 1. Add a Zapier Code step, define a variable “record_types” and add “Recording Files Recording Type “ Zoom field as its value.

Then paste this code:

// this is wrapped in an `async` function

// you can use await throughout the function

 

var types = inputData.record_types.split(",");

var position = types.indexOf("shared_screen_with_speaker_view");

 

var result = position;

if (position>2){

result = 2;

}

output = p{output: result}];

What it does: looks for the position of “shared_screen_with_speaker_view” in that list starting from 0 (exactly what we need).  For example, here it will return 2.

  1. gallery_view
  2. active_speaker
  3. shared_screen_with_speaker_view
  4. chat_file

Also, I have 3 recordings for all calls, so the maximum number of video records for me is 2 (0, 1, 2). But Recording Files Recording Type also includes chat files, and that messes the numbers up (you can get a number that is bigger that the amount of video records). My workaround are these rows at the end of the code:

if (position>2){

result = 2;

}

Please note that if you store more or less types of video, you should adjust it to your case. The number you should put there is number of types you use minus 1.

 

Step 2. Add a Zoom Formatter step → Utilities → Pick from the list, where the number of the item you pick is the result of step 1, and the list is “Video Files Download URL” Zoom field.

 


This is awesome, thanks for sharing @Hadar!