index.html
Notice: You can use this way add @zoomus/websdk package if you familiar with nodejs and webpack.
or go to Full Demo Local Statement
1. install @zoomus/websdk
npm install @zoomus/websdk
@zoomus/websdk/packages.json
then, npm will install @zoomus/websdk and blow dependencies packages to node_modules require Node.js 10
"dependencies": {
"react": "16.8.6",
"react-dom": "16.8.6",
"redux": "3.7.2",
"react-redux": "7.1.0",
"lodash": "^4.17.14",
"redux-thunk": "2.2.0"
}
2. config add an entry to webpack.config.dev.js
entry: {
meeting: [
'./js/meeting.js'
]
},
output: {
path: path.resolve(__dirname, '/static'),
publicPath: '/static',
hashDigestLength: 5,
filename: '[name].min.js'
},
externals: {
'babel-polyfill': 'babel-polyfill',
react: 'React',
'react-dom': 'ReactDOM',
redux: 'Redux',
'redux-thunk': 'ReduxThunk',
lodash: {
commonjs: 'lodash',
amd: 'lodash',
root: '_',
var: '_'
}
}
meeting.html
<!DOCTYPE html>
<head>
<title>Zoom WebSDK</title>
<meta charset="utf-8" />
<link type="text/css" rel="stylesheet" href="node_modules/@zoomus/websdk/dist/css/bootstrap.css" />
<link type="text/css" rel="stylesheet" href="node_modules/@zoomus/websdk/dist/css/react-select.css" />
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
</head>
<body>
<script src="node_modules/react/umd/react.production.min.js"></script>
<script src="node_modules/react-dom/umd/react-dom.production.min.js"></script>
<script src="node_modules/redux/dist/redux.min.js"></script>
<script src="node_modules/redux-thunk/dist/redux-thunk.min.js"></script>
<script src="node_modules/lodash/lodash.min.js"></script>
<script src="js/tool.js"></script>
<script src="./static/meeting.min.js"></script>
</body>
</html>
js/meeting.js
import { ZoomMtg } from "@zoomus/websdk";
const testTool = window.testTool;
// get meeting args from url
const tmpArgs = testTool.parseQuery();
const meetingConfig = {
apiKey: tmpArgs.apiKey,
meetingNumber: tmpArgs.mn,
userName: (function () {
if (tmpArgs.name) {
try {
return testTool.b64DecodeUnicode(tmpArgs.name);
} catch (e) {
return tmpArgs.name;
}
}
return (
"CDN#" +
tmpArgs.version +
"#" +
testTool.detectOS() +
"#" +
testTool.getBrowserInfo()
);
})(),
passWord: tmpArgs.pwd,
leaveUrl: "/index.html",
role: parseInt(tmpArgs.role, 10),
userEmail: (function () {
try {
return testTool.b64DecodeUnicode(tmpArgs.email);
} catch (e) {
return tmpArgs.email;
}
})(),
lang: tmpArgs.lang,
signature: tmpArgs.signature || "",
china: tmpArgs.china === "1",
};
console.log(JSON.stringify(ZoomMtg.checkSystemRequirements()));
// it's option if you want to change the WebSDK dependency link resources. setZoomJSLib must be run at first
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
function beginJoin(signature) {
ZoomMtg.init({
leaveUrl: meetingConfig.leaveUrl,
webEndpoint: meetingConfig.webEndpoint,
success: function () {
console.log(meetingConfig);
console.log("signature", signature);
ZoomMtg.i18n.load(meetingConfig.lang);
ZoomMtg.i18n.reload(meetingConfig.lang);
ZoomMtg.join({
meetingNumber: meetingConfig.meetingNumber,
userName: meetingConfig.userName,
signature: signature,
apiKey: meetingConfig.apiKey,
userEmail: meetingConfig.userEmail,
passWord: meetingConfig.passWord,
success: function (res) {
console.log("join meeting success");
console.log("get attendeelist");
ZoomMtg.getAttendeeslist({});
ZoomMtg.getCurrentUser({
success: function (res) {
console.log("success getCurrentUser", res.result.currentUser);
},
});
},
error: function (res) {
console.log(res);
},
});
},
error: function (res) {
console.log(res);
},
});
}
beginJoin(meetingConfig.signature);