Join meeting as bot and record meeting

@chunsiong.zoom, on the “Zoom Apps” you mentioned earlier, I am trying to use zoomapps-advancedsample-react but getting into this error:

Error: Invalid state parameter
    at auth (/home/node/app/api/zoomapp/controller.js:173:21)
    at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/node/app/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)
    at /home/node/app/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/node/app/node_modules/express/lib/router/index.js:346:12)
    at next (/home/node/app/node_modules/express/lib/router/index.js:280:10)
    at Function.handle (/home/node/app/node_modules/express/lib/router/index.js:175:3)
    at router (/home/node/app/node_modules/express/lib/router/index.js:47:12)
Error: Not found
    at /home/node/app/server.js:51:17
    at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/node/app/node_modules/express/lib/router/index.js:328:13)
    at /home/node/app/node_modules/express/lib/router/index.js:286:9
    at Function.process_params (/home/node/app/node_modules/express/lib/router/index.js:346:12)
    at next (/home/node/app/node_modules/express/lib/router/index.js:280:10)
    at setResponseHeaders (/home/node/app/middleware.js:21:5)
    at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/node/app/node_modules/express/lib/router/index.js:328:13)
    at /home/node/app/node_modules/express/lib/router/index.js:286:9

I noticed some other users having same issue but could not figure out solution

@shaheer.teczon for zoom apps, please post a question in the relevant section. I’m not too familiar with it.

If your docker image + code is properly provisioned, using a cloud provider, the spinning up of docker instance after getting a meeting started webhook should take seconds if not milliseconds. The logic to join the meeting might take a few more seconds.

You should not rebuild it every time you want to join the meeting. It should be built once, run many times.

I can’t debug the error code unless I have the logs or JWT token. Typically it is error associated with the JWT token

@chunsiong.zoom

  1. Can you share anyone i can tag for zoom apps?

  2. Also how to achieve that build once run many times since right now it picks meeting url from a file. Can you guide a little more on this one?

  3. What logs do you want all I see is “Authentication failed because the Zoom SDK encountered an unknown error: 5”, even though when i try to rejoin same meeting from same bot. It just occur randomly

@shaheer.teczon

  1. It will be picked up by someone monitoring the section
  2. This is a docker specific question, I’ll not answer too much in specific here. You need to build your own image with the dependencies and code baked in, so when it starts, it will directly start with the executable instead of rebuilding. The reading of parameters is up to your own implementation. In docker you can pass parameters from the host to the the running docker instance
  3. You will need to capture the sdk log. Alternatively could you show me the JWT signature which you are using? If you are rejoining, it might not be a good idea. This is not part of the scope of the sample, but I use a web service to retrieve the JWT token every time I start the docker instance. I never reuse my docker instance as the token might have expired, or the meeting ID might have changed.

@chunsiong.zoom Does linux sdk support native zoom transcriptions/closed caption now?

@shaheer.teczon no, Linux Meeting SDK does not support transcription / closed caption

@chunsiong.zoom I have started facing :x: authentication failed because the JWT is invalid while the image is still same. What could be reason of it?

@chunsiong.zoom, Please have a look, it was working fine before

Generated JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJfeVpvS0I4aFJpNjhhTmF5eFJhcWNnIiwiZXhwIjoxNzI2Mzk0NzkxLCJpYXQiOjE3MjYzMDgzOTEsInRva2VuRXhwIjoxNzI2Mzk0NzkxfQ.iBvmCoAkUfEQfHPZ0Cwoy1QOZFBD_bkMdnbppRhf-ec

void Zoom::generateJWT(const string& key, const string& secret) {

m_iat = std::chrono::system_clock::now();
m_exp = m_iat + std::chrono::hours{24};

m_jwt = jwt::create()
        .set_type("JWT")
        .set_issued_at(m_iat)
        .set_expires_at(m_exp)
        .set_payload_claim("appKey", claim(key))
        .set_payload_claim("tokenExp", claim(m_exp))
        .sign(algorithm::hs256{secret});
std::cout << "Generated JWT: " << m_jwt << std::endl;

}

@shaheer.teczon did you hardcode the JWT or did you generate a new JWT token every time you run the docker image?

Based on the sample which you have shared, the validity of the token is only 24 hours.

Typically in production / deployed environment, you will want to generate a JWT token every single time right before you join a meeting.

@chunsiong.zoom New token is generated eveyrtime when we run a docker image. Same code was working before but not now. I am not sure what got wrong. Your urgent attention is required

@shaheer.teczon are you joining the same meeting number?

If you are joining a meeting hosted by user in external tenant, you need to publish your marketplace app.

If it is urgent, I would recommend you to sign up for a premier developer support plan.

@chunsiong.zoom I am joining meeting hosted by same user as app and no I am joining using meeting url. I have tried creating different meeting but it is stuck on same error.

@chunsiong.zoom I don’t think so error should come even if it is same meeting

@shaheer.teczon what is the error message?

@chunsiong.zoom :x: authentication failed because the JWT is invalid

@chunsiong.zoom Any recommended solution for it?

@shaheer.teczon I’ll PM you for this, I will need to get your JWT, meeting number and password

@chunsiong.zoom Sure. I will share


For reference

@MaxM are you familiar with the error code 134?