0
import React, { useState } from "react";
import ReactDOM from "react-dom";
import { ZoomMtg } from "@zoomus/websdk";
import "./Meet.css";
import SpeechText from "./SpeechText";

ZoomMtg.setZoomJSLib("https://source.zoom.us/2.14.0/lib", "/av");
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
ZoomMtg.i18n.load("en-US");
ZoomMtg.i18n.reload("en-US");

const KJUR = require("jsrsasign");

const Meet = () => {
 var sdkKey = process.env.REACT_APP_SDK_KEY;

 var meetURL = "";
 var meetNo = "";
 var pass = "";
 var role = 0; // 0 means user and 1 means host
 var userName = "NIK";
 var userEmail = "";
 var registrantToken = "";
 var zakToken = "";
 var leaveURL = "https://zoom.us/"; // when the meeting is over it will redirect to this url

 const [ele, setEle] = useState(
 document.getElementsByClassName("footer__btns-container")
 );
 const getSign = (e) => {
 e.preventDefault();
 // tesing the url against the regex which is the valid form of the url
 if (
  !meetURL ||
  !meetURL.match(/^https:\/\/us05web\.zoom\us\/j\/\d+\?pwd=[a-zA-Z0-9]+$/)
 ) {
  alert("Please Enter a valid meet link");
  return;
 }

pass = meetURL.split("?")[1].split("=")[1];
meetNo = meetURL.split("?")[0].split("/")[4];
const iat = Math.round(new Date().getTime() / 1000) - 30;
const exp = iat + 60 * 60 * 2;
const oHeader = { alg: "HS256", typ: "JWT" };
const oPayload = {
sdkKey: process.env.REACT_SDK_KEY,
mn: meetNo,
role: role,
iat: iat,
exp: exp,
appKey: process.env.REACT_SDK_KEY,
tokenExp: iat + 60 * 60 * 2,
};
const sHeader = JSON.stringify(oHeader);
const sPayload = JSON.stringify(oPayload);
const signature = KJUR.jws.JWS.sign(
"HS256",
sHeader,
sPayload,
process.env.REACT_SDK_KEY
);
startMeet(signature);
};

const startMeet = (signature) => {
document.getElementById("zmmtg-root").style.display = "block";


ZoomMtg.init({
  leaveUrl: leaveURL,
  success: (success) => {
    ZoomMtg.join({
      signature: signature,
      sdkKey: sdkKey,
      meetingNumber: meetNo,
      passWord: pass,
      userName: userName,
      userEmail: userEmail,
      tk: registrantToken,
      zak: zakToken,
      success: (success) => {
        
        var refreshInterval = setInterval(() => {
          if (document.getElementsByClassName("footer__btns-container")) {
            setEle(
              document.getElementsByClassName("footer__btns-container")
            );
          }
        }, 2000);
        if (ele.length !== 0) {
          const createdEle = document.createElement("div");
          createdEle.setAttribute("id", "custom-foot-bar");
          ele[0].appendChild(createdEle);
          ReactDOM.render(
            <SpeechText />,
            document.getElementById("custom-foot-bar")
          );
          clearInterval(refreshInterval);
        }
        console.log(success);
      },
      error: (error) => {
        console.log(error);
      },
    });
  },
  error: (error) => {
    console.log(error);
  },
});
};

return (
<>
  <main>
    <h1>GPT Zoom Bot</h1>
    <div className="meetCredentials">
      <label>Meeting URL</label>
      <input
        autoFocus
        type="text"
        id="meetingUrl"
        placeholder="Enter the meeting link"
        required
        defaultValue={meetURL}
        onChange={(e) => {
          meetURL = e.target.value;
        }}
      />
      <button onClick={getSign}>Join Meeting</button>
    </div>
  </main>
</>
);
};

export default Meet;

Above code enables users to join a Zoom meeting by providing a meeting URL and initializes and joins the Zoom meeting using the Zoom Meeting SDK, and dynamically renders a custom footer bar with a SpeechText component once the bot is admitted to the meeting.

The following error shows in the console enter image description here

Help would be much appreciated.

If the above code runs then it will show a input box to enter the meeting link.

  • Hi Nikhil, welcome to Stack Overflow. As a convention, error messages should be included using Stack Overflow's built-in code formatting option. It makes for easier copy-pasting and viewing. – Nicholas Obert Aug 07 '23 at 07:40
  • Just a note. I think the problem is not with your code, but more likely with the function `ZoomMtg` you import from "@zoomus/websdk". – Galbert Aug 07 '23 at 08:46
  • @Galbert any solution for the problem or any alternative? – Nikhil Kumar Sahu Aug 07 '23 at 10:50
  • 'c2 ZoomMtg zoomus/websdk problem' on google and click on first result. https://www.youtube.com/watch?v=4BgkLvH7T0Y – Galbert Aug 07 '23 at 14:40

0 Answers0