Little confusion about App type and the flow

Hello,

I’m Nikhil Sreenivasan. Basically, we’ve our website wherein teachers are going to get register and teach the student different art form courses after the student buy the particular course and we assigned the courses to the available teacher. So, through teacher’s profile there’s an option to put in Class details of a particular course. So, after submitting that form I’m collecting Date, Time, Duration, Student id and Course id. After click of Submit, I basically planned and thought of a idea wherein the details goes to Create Meeting Zoom API and also the details of the meeting like Join URL, teacher name, other details like time, duration etc. will be sent to the users through email but I’m unable to do it. I’m currently using JWT Token on my free zoom App marketplace account. Also, is it necessary to have a pro or higher account to achieve this. PS: I’m aware of 40 mins time limitation that is applicable to zoom free account.
Please guide choosing the appropriate app type or using JWT which I’ve already setup I can achieve the above mentioned things.

Regards,
Nikhil Sreenivasan.

Hello @will.zoom,

Can you please look into it and guide me regarding the same.

Regards,
Nikhil Sreenivasan.

Hey @nike28,

Will these students and teachers all be under the same account as your JWT app? Or will you require the ability to have teachers who aren’t under your account host meetings? Depending on this, you may want to consider an OAuth app, which allows you to request access to users outside of your own Zoom account (for the purposes of scheduling a meeting on their behalf, etc.).

Alternatively, if they will all be under your account, a JWT app should work for you.

Regarding pricing, we recommend a Pro or higher plan if you will need to host group meetings over 40 minutes. If you’re only handling 1:1 meetings and they will be shorter than 40 minutes, you will not be required to have a paid plan.

Let me know if this helps!

Best,
Will

Hey @will.zoom,

Could you elaborate a little what exactly do you mean by ‘under the same account’ ? Can you give me an example where exactly will it be an issue? Also, 40 mins is fine for us. After teacher fills this form and clicks on create(Please refer below image), CreateMeeting API will be called and the join_url, start_time etc. will be sent to students which are assigned to her from our CMS through email. I have used JWT for the same and I’m not finding any issue till now. I’ve called CreateMeeting API and passed dynamic parameters through this form & I’m getting proper response too.

Regards,
Nikhil Sreenivasan.

Hey @nike28,

Happy to clarify!

Will teachers all be under the same account as your JWT app?

What I mean by this, is will the users hosting your meetings be users under the Zoom account that is associated with your JWT app. It sounds like this is the case, since this is working for you so far. The reason I asked is because in order to host meetings using a JWT app, the host must be from the same account as the credentials you’re using to authenticate your integration.

In short, if this is working as expected for you, you shouldn’t need to change anything. But let me know if you still have questions—happy to further assist.

Best,
Will

Hey @will.zoom,

Yes, I mean I have a developer account in App Marketplace where I have used my account credentials. Basically, that account is for official use only. Yes, the teachers(users) who will logging in and creating the class they will be using the same account which is the account I have made on Zoom App Marketplace. Till now, I’m not facing any issue, if there’s any I’ll get back to you Will.

Regards,
Nikhil Sreenivasan.

Hey @will.zoom,

I have some more queries:

One is regarding the time. Basically, what I 've done is when the teacher(user) clicks on create the form details are sent as a parameters to Create Meeting API and that is called. But, how can I get the correct time which I’m setting through form . I stay in India so our time zone is IST. I’ve given datetime-local input type to Class Date & Time field. I get the time in email as

Timing: 2020-10-21T03:19:57Z and through form and in my database the time which is inserted is 2020-10-21T10:00. I want the latter one to be shown in email, how can I achieve that?
PS:I know the time zone in Create Meeting is GMT, but I’m not getting how should I show that is IST in email.

Second is when the the teacher clicks on start_url through her email a new tab is opened which asks to open Zoom meeting, so from their she can start and then after the meeting ends, is it possible to mention/specify the callback URL to our website as after it redirects to the Zoom page which may confuse the user. So, I was thinking if there’s an option to set the callback URL.

Thanks Will for always sticking by & guiding me! Appreciated!

Regards,
Nikhil Sreenivasan.

Hey @will.zoom,

I’ve attached my function SS just for your clarity where I’ve even mentioned the time zone.

If you require any other details I’ll provide you that as well.

Thanks,
Nikhil Sreenivasan.

Hey @will.zoom,

To check exactly if I’m doing anything wrong from my end, I had printed the value which I’m getting in $createAMeetingArray[‘start_time’] = $data[‘start_time’]; & I was getting the same time as I had submitted through my form. I haven’t mentioned ‘Z’ in the time zone as I had read in dev forum that it’s ‘Z’ in the time zone that causes this issue. Please check below SS:

image

When I checked my Call logs through App Marketplace I noticed in API it’s getting converted to GMT, even though I had specified the time zone as ‘Asia/Calcutta’.

{
“endpoint”: “https://api.zoom.us/v2/users/me/meetings”,
“response_headers”: [
“Set-Cookie: zm_aid=”"; Domain=.zoom.us; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly"
],
“date_time”: “2020-10-21 12:22:48”,
“method”: “POST”,
“request_body”: “{“topic”:“Std6-10CursiveHandwriting”,“agenda”:“Timezonecheck.”,“type”:2,“start_time”:“2020-10-21T13:30:00”,“duration”:“10”,“settings”:{“join_before_host”:false,“host_video”:true,“participant_video”:true,“mute_upon_entry”:true,“enforce_login”:false,“auto_recording”:“none”,“use_pmi”:“false”}}”,
“response”: "{“uuid":“o4akoZIZSGuxiTzsK0E3Nw==”,“id”:97321422411,“host_id”:“hd9rbpk9Qla3GGQTiA8dBw”,“host_email”:"nikhil@appmonks.net”,“topic”:“Std 6 - 10 Cursive Handwriting”,“type”:2,“status”:“waiting”,"start_time":“2020-10-21T08:00:00Z”,“duration”:10,“timezone”:“Asia/Calcutta”,“agenda”:“Timezone check.”,“created_at”:“2020-10-21T06:52:48Z”,“start_url”:“https://zoom.us/s/97321422411?zak=eyJ6bV9za20iOiJ6bV9vMm0iLCJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJ1aWQiOiJoZDlyYnBrOVFsYTNHR1FUaUE4ZEJ3IiwiaXNzIjoid2ViIiwic3R5IjoxMDAsIndjZCI6ImF3MSIsImNsdCI6MCwic3RrIjoiZHR0Q3p5UjA3U3FtbEFIeEpiQ3VweUlueW1QQUNZaDhGbzBjVWFTWmFudy5CZ2NUYm1scmFHbHNRR0Z3Y0cxdmJtdHpMbTVsZEVBNE5UTm1PV0l5TURVeVpUazROVFl6TXpFMll6QmhOMkV5TVRGbU56VTNORGN4TlRFeU9EZ3lPR0l3WmpBNU9UZGxObU16WldFeVpXSTJZek5qTmpSaUFCSTRNVGd6TkRnMU1USTROVFV5TVRreU1ERUFBMkYzTVFBQUFYVko3bjdlQUJKMUFBIiwiZXhwIjoxNjAzMjcwMzY4LCJpYXQiOjE2MDMyNjMxNjgsImFpZCI6ImxRUVBkMGlQVE5XQ1ZhRE8ySlVPSWciLCJjaWQiOiIifQ.rrjG7ttSvu455awH1MczTTboqFb2U_aUD-eKCxohFJc",“join_url”:"https://zoom.us/j …”,
“request_headers”: [
“accept: /”,
“authorization: ******”,
“connection: close”,
“content-type: application/json”
],
“request_params”: [
],
“http_status”: “201”
}

Thank you Will. Just to make things easy for you too sort out I’m constantly replying and providing you with multiple SS from my end. Please don’t mind.

Regards,
Nikhil Sreenivasan.

Hey @nike28,

Regarding the email that is sent with the Start URL, is this a Zoom generated email, or something you’re generating on your end?

For the start_time, if you wish to use GMT on the backend, you should include the Z in your date/time and exclude the timezone parameter from your request. Please also ensure your date-time format is correct—it looks like you have a space between time and date. It should be like this, if you wish to generate start_time in GMT:
2020-10-21T12:22:48Z

Let me know if this helps to clarify,
Will

Hey @will.zoom,

No, it is not a zoom generated email, I’ve done this functionality from my end. I want the time to be in IST and not GMT. Whatever the user mentions through the form that has to be shown in email. I have tried printing $createAMeetingArray[‘start_time’] = $data[‘start_time’]; I’m getting the one which is mentioned through from but only in email it gets converted into GMT. Can you also let me know about the callback URL query which I had mentioned above.

Thanks,
Nikhil Sreenivasan.

Hey @nike28,

Thanks for clarifying. Regarding the start time reflected in your email, best practice is to keep the time in GMT on the backend as you receive it from the API response and convert it to local time on your frontend.

Regarding the callback url, our start_url does not support callbacks/redirect parameters.

Let me know if this helps to clarify,
Will

Hey @will.zoom,

Do you have any code samples which I can refer too for time conversion? Did you mean the date and time which I get from the above form which will be in IST to convert that into GMT and send it too API as GMT only then while writing email code to convert that GMT to IST?

Also, regarding the callback URL, I meant after when the host ends the meeting through Zoom, after that can she be redirected to our website? Is that at all possible?

Thank you Will.

Regards,
Nikhil Sreenivasan.

Hey @will.zoom,

I fixed the time issues by creating separate input fields for date & time and I had fetch the post data in email. But, I’m facing one more issue which is when I had sent the join URL to my participant their the timing was showing as the one when I had called the API, I want that to be set to the Meeting time which I had scheduled through my webpage. Please refer below SS.


I had scheduled my meeting to 11:30 and 10:34 is the time when I was testing and called the API after form submit.

Can you please look into this?

Thanks & Regards,
Nikhil Sreenivasan.

Hey @nike28,

Can you share the Create Meeting API request for the meeting that is associated with this screenshot? Without seeing the values you’re passing on the backend, it’s hard to say what might be causing the issue.

Thanks!
Will