How to start a Zoom Meeting from Rails ?

28 April
  • tutorial, programming, technical, tools

On a recent project at Azuki, we have been using the Zoom API and we thought that it would be a great idea to share how we did it. In this very simple tutorial, I am going to show you how to automatically create a zoom link automatically whenever you create a meeting (or a reunion, or even a pow-wow).

First thing first, who says Rails says gem ! and of course someone created a wonderful gem that we are going to use. Zoom_rb .

So we’re going to add the gem to our gemfile.rb

gem 'zoom_rb'

and then run bundle install

Follow this link : https://marketplace.zoom.us/develop/create and click on ‘create’ in the JWT box.

Once you have your API key and secret, copy and paste them into your .env file (or whatever environment you are using) . Let’s create an initializer file that will load up with our app.

So into config/initializers, you can create a file called Zoom.rb and set the keys :

Zoom.configure do |c|
  c.api_key = ENV['ZOOM_API_KEY'] 
  c.api_secret = ENV['ZOOM_API_SECRET']` 
end

In your terminal, go in your console (type : rails c)

zoom_client = Zoom.new
zoom_client.user_list

This will return you with a hash of informations, just grab the “id” and copy and paste it into your .env file as ZOOM_USER_ID

To simplify here let’s imagine here you have a Meeting model (meeting.rb). first thing you want to do is to run a migration to add a Zoom link to your model.

rails g migration AddZoomLinkToMeetings zoom_link:string

don’t forget to rails db:migrate

Inside our model, we are going to create two methods. The first one is going to create the meeting on Zoom and fetch the URL for you.

def create_zoom_meeting(topic)
 zoom_client = Zoom.new
 response = zoom_client.meeting_create(topic: topic, user_id: ENV['ZOOM_USER_ID'])
 response['join_url']
end

The second method will save the newly created zoom link in your database

def save_zoom_link(meeting_topic)
  return if zoom_link.present?
  _zoom_link = create_zoom_meeting(meeting_topic)
  update(zoom_link: _zoom_link)
end

Now that we have our methods, we need to call them.

What we want is to have a link when we create a meeting. So let’s head to our meetings_controller.rb

Now let’s call the methods in our create actions

def create 
  @meeting = Meeting.new(meeting_params)
  @meeting.save_zoom_link(@meeting.name)
  @meeting.save
  redirect_to meeting_path(@meeting)
end

You can set the meeting_topic to whatever you want.

Let’s double check in the console

rails c
Meeting.last.zoom_link

If it worked you should see a zoom link for your meeting !

I hope this tutorial was useful, the process is quite simple but some bits can be a bit tricky.

Have fun !

Our little BONUS for enthusiast reader :

You can set recurrent meeting if you want and allow some extra options. Here’s an example :

zoom_client.meeting_create(
topic: topic, 
 type: 8,
 user_id: zoom_account.user_id,
 start_time: Time.now.iso8601,
 duration: 120,
  recurrence: {
 type: 1,
  end_times: 5,}, 
  settings: {
  host_video: true,
  participant_video: true, 
  mute_upon_entry: true,
 }
  )

Photo by iyus sugiharto on Unsplash