ZoomMtg.js

  1. /* eslint valid-jsdoc: "error" */
  2. /* eslint-env es6 */
  3. /**
  4. * @file This is zoom WebSDK for web.
  5. * @copyright Zoom 2022
  6. * @version WebSDK2.7.0
  7. * @namespace ZoomMtg
  8. */
  9. const ZoomMtg = {
  10. generateSignature,
  11. init,
  12. join,
  13. showInviteFunction,
  14. showCalloutFunction,
  15. showMeetingHeader,
  16. showRecordFunction,
  17. showJoinAudioFunction,
  18. showPureSharingContent,
  19. getAttendeeslist,
  20. getCurrentUser,
  21. callOut,
  22. inviteByPhone,
  23. inviteCRCDevice,
  24. cancelInviteCRCDevice,
  25. mute,
  26. muteAll,
  27. rename,
  28. expel,
  29. record,
  30. lockMeeting,
  31. leaveMeeting,
  32. endMeeting,
  33. successCallBack,
  34. errorCallBack,
  35. inMeetingServiceListener,
  36. reRender,
  37. putOnHold,
  38. };
  39. /**
  40. * @typedef errorCodes
  41. * @method errorCodes
  42. * @property {string} [0] - invoke function success
  43. * @property {string} [1] - invoke function error
  44. * @property {string} [2] - you must be init at first
  45. * @property {string} [403] - apac.errorcodes_offline
  46. * @property {string} [3000] - apac.errorcodes_web_has_in_progress
  47. * @property {string} [3003] - apac.errorcodes_not_host
  48. * @property {string} [3004] - apac.errorcodes_wrong_pass
  49. * @property {string} [3005] - apac.errorcodes_web_require_email
  50. * @property {string} [3008] - apac.errorcodes_not_start
  51. * @property {string} [3009] - apac.errorcodes_be_removed
  52. * @property {string} [3082] - apac.errorcodes_login_required
  53. * @property {string} [3110] - need check recaptcha
  54. * @property {string} [3051] - need zoom login
  55. * @property {string} [3052] - need zoom login with specific login
  56. * @property {string} [6024] - need sso login
  57. * @property {string} [3603] - apac.errorcodes_web_not_support_webclient
  58. * @property {string} [3604] - apac.errorcodes_web_should_support_webinar_with_latest_version
  59. * @property {string} [3606] - apac.errorcodes_web_not_support_registration_webinar
  60. * @property {string} [3608] - apac.errorcodes_web_not_support_tsp
  61. * @property {string} [3609] - apac.errorcodes_web_not_allow_start_webinar_from_web
  62. * @property {string} [3610] - apac.errorcodes_not_exist
  63. * @property {string} [3610] - apac.errorcodes_tk_expired
  64. * @property {string} [3620] - apac.errorcodes_denied_email
  65. * @property {string} [3630] - apac.errorcodes_not_support_simulive
  66. * @property {string} [3633] - apac.errorcodes_frequent_call
  67. * @property {string} [3701] - apac.errorcodes_web_not_support_webinar_pac
  68. * @property {string} [3702] - apac.errorcodes_web_host_not_exit
  69. * @property {string} [3703] - apac.errorcodes_web_invalid_id
  70. * @property {string} [3704] - apac.errorcodes_pac_api_wrong
  71. * @property {string} [3705] - apac.errorcodes_pac_signature_expired
  72. * @property {string} [3706] - apac.errorcodes_pac_mn_wrong
  73. * @property {string} [3707] - apac.errorcodes_pac_mn_not_fount
  74. * @property {string} [3708] - apac.errorcodes_pac_role_error
  75. * @property {string} [3709] - apac.errorcodes_pac_host_not_found
  76. * @property {string} [3710] - apac.errorcodes_pac_api_disabled
  77. * @property {string} [3711] - apac.errorcodes_pac_cant_host_other_mn
  78. * @property {string} [3712] - apac.errorcodes_pac_invalid_signature
  79. * @property {string} [3713] - apac.errorcodes_pac_no_permission
  80. * @property {string} [4000] - reconnecting meeting
  81. * @property {string} [4001] - disconnect meeting
  82. * @property {string} [4003] - apac.invalid_parameter
  83. */
  84. /**
  85. * Success Callback
  86. * @callback successCallback
  87. * @memberof ZoomMtg
  88. * @param {Object} res - Response Object
  89. * @property {string} res.method - API Method
  90. * @property {boolean} res.status - Status of call
  91. * @property {int} res.errorCode - Error Code {@link errorCodes}
  92. * @property {string} res.errorMessage - Error message {@link errorCodes}
  93. * @property {Object} res.result - Response result object
  94. */
  95. /**
  96. * Error Callback
  97. * @callback errorCallback
  98. * @memberof ZoomMtg
  99. * @param {Object} res - Response Object
  100. * @property {string} res.method - API Method
  101. * @property {boolean} res.status - Status of call
  102. * @property {int} res.errorCode - Error Code {@link errorCodes}
  103. * @property {string} res.errorMessage - Error message {@link errorCodes}
  104. * @property {Object} res.result - Response result object
  105. */
  106. /**
  107. * change zoom default requirements lib resource
  108. * @memberof ZoomMtg
  109. * @method setZoomJSLib
  110. * @instance
  111. * @param {Object} params options
  112. * @param {string} [params.zoomJSLib='https://source.zoom.us/2.7.0/lib'] - default use ES5
  113. * @param {string} [params.zoomJSAVLib='/av'] - default build var
  114. * @param {string} [params.zoomJSLib='YouWebSite/node_modules/@zoomus/websdk/dist/lib'] - default use ES6 import feature
  115. * @param {string} [params.zoomJSAVLib='/av'] - default build var
  116. * @example
  117. *
  118. * ZoomMtg.setZoomJSLib('https://source.zoom.us/2.7.0/lib', '/av');
  119. * AVFiles = {
  120. audioWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_js_audio_process.min.js`,
  121. audioWorkletPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_js_audio_worklet.min.js`,
  122. videoWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_video_s.min.js`,
  123. videoMtWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_video_m.min.js`,
  124. sharingWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_sharing_s.min.js`,
  125. sharingMtWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_sharing_m.min.js`,
  126. videoSIMDWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_video_simd.min.js`,
  127. sharingSIMDWorkerPath: `${zoomJSLib}${zoomJSAVLib}/${jsmediaVersion}_sharing_simd.min.js`,
  128. };
  129. WasmFiles = {
  130. encode: `${zoomJSLib}${zoomJSAVLib}/audio.encode.wasm`,
  131. decode: `${zoomJSLib}${zoomJSAVLib}/video.decode.wasm`,
  132. decodeMt: `${zoomJSLib}${zoomJSAVLib}/video.mt.wasm`,
  133. decodeSimd: `${zoomJSLib}${zoomJSAVLib}/video.simd.wasm`,
  134. };
  135. */
  136. /**
  137. * preload wasm file if wasm download error, the 2AV feature don't work
  138. * wasm file(big) to browser cache, reduce customer download those file time and improve joining experience
  139. * @memberof ZoomMtg
  140. * @method preLoadWasm
  141. * @instance
  142. * @example
  143. * ZoomMtg.preLoadWasm();
  144. * // avMediaVersion can't change, every websdk version has a specific avMediaVersion
  145. * // pre load wasm success: ${zoomJSLib}${zoomJSAVLib}/av/{avMediaVersion}_sharing.wasm
  146. * // pre load wasm success: ${zoomJSLib}${zoomJSAVLib}/av/{avMediaVersion}_audio.encode.wasm
  147. * // pre load wasm success: ${zoomJSLib}${zoomJSAVLib}/av/{avMediaVersion}_video.decode.wasm
  148. */
  149. /**
  150. * add script to download requirements js file and node to body
  151. * @memberof ZoomMtg
  152. * @method prepareWebSDK
  153. * @instance
  154. * @example
  155. * ZoomMtg.prepareWebSDK();
  156. *
  157. * // 1. add script to download requirements js file
  158. * // for IE
  159. * // <script type="text/javascript" src="${zoomJSLib}${zoomJSAVLib}/av/../{avMediaVersion}_webim.min.js"></script>
  160. * // <script type="text/javascript" src="${zoomJSLib}${zoomJSAVLib}/av/{avMediaVersion}_js_media_ie.min.js"></script>
  161. * // for No IE
  162. * // <script type="text/javascript" src="${zoomJSLib}${zoomJSAVLib}/av/../{avMediaVersion}_webim.min.js"></script>
  163. * // <script type="text/javascript" src="${zoomJSLib}${zoomJSAVLib}/av/{avMediaVersion}_js_media.min.js"></script>
  164. * // 2. add a node which WebSDK use
  165. * // <div id="zmmtg-root">
  166. * // <div data-reactroot="" class="meeting-app"></div>
  167. * // </div>
  168. * // react modal auto generation.
  169. * // <div class="ReactModalPortal"></div>
  170. *
  171. */
  172. /**
  173. * A quick test way to generate signature, get an api {@link https://marketplace.zoom.us/docs/sdk/native-sdks/web/essential/signature}
  174. * introduce get API https://www.visibility.one/support/zoom-api-how-to-get-your-api-from-the-zoom-marketplace
  175. * backe-end to genarate signature go to see {@link generate_signature} in php
  176. * @memberof ZoomMtg
  177. * @instance
  178. * @method generateSignature
  179. * @param {Object} params options
  180. * @param {string} params.apiKey - api key
  181. * @param {string} params.apiSecret - api secret
  182. * @param {string} params.meetingNumber - meeting number
  183. * @param {number} params.role - 1 is host, 0 is attendee, webinar just support 0
  184. * @return {string} return signature
  185. * @example
  186. *
  187. *
  188. * //source code generateSignature
  189. import * as base64JS from 'js-base64';
  190. import * as hmacSha256 from 'crypto-js/hmac-sha256';
  191. import * as encBase64 from 'crypto-js/enc-base64';
  192. function generateSignature(data) {
  193. let signature = '';
  194. // Prevent time sync issue between client signature generation and zoom
  195. const ts = new Date().getTime() - 30000;
  196. try {
  197. const msg = base64JS.Base64.encode(data.apiKey + data.meetingNumber + ts + data.role);
  198. const hash = hmacSha256.default(msg, data.apiSecret);
  199. signature = base64JS.Base64.encodeURI(`${data.apiKey}.${data.meetingNumber}.${ts}.${data.role}.${encBase64.stringify(hash)}`);
  200. } catch (e) {
  201. console.log('error')
  202. }
  203. return signature;
  204. }
  205. */
  206. /**
  207. * check zoom WebSDK features for customer's browser
  208. * @memberof ZoomMtg
  209. * @method checkSystemRequirements
  210. * @param {Boolean} [print=true] - whether console log check info
  211. * @return {Object} return check result, return false when check fail
  212. * @instance
  213. * @example
  214. * ZoomMtg.checkSystemRequirements()
  215. *
  216. * //ie 9 example check fail
  217. * false
  218. *
  219. * //chrome example check success
  220. {
  221. "browserInfo": "Chrome/87.0.4280.88",
  222. "browserName": "Chrome",
  223. "browserVersion": "87.0.4280.88",
  224. "features": ["viewSharing", "computerAudio", "computerVideo", "callIn", "callOut", "chat", "closedCaption", "QA", "POLLING", "BREAKOUT"]
  225. }
  226. *
  227. */
  228. /**
  229. * get WebSDK version
  230. * @memberof ZoomMtg
  231. * @method getWebSDKVersion
  232. * @return {Array} return WebSDK version number. old getJSSDKVersion will remove very soon
  233. * @instance
  234. * @example
  235. * ZoomMtg.getWebSDKVersion()
  236. * @example
  237. ["2.7.0", "2.7.0", 6331]
  238. */
  239. /**
  240. * Init Zoom Meeting
  241. * @memberof ZoomMtg
  242. * @method init
  243. * @instance
  244. * @param {Object} params options
  245. * @param {Object} params.loginWindow options
  246. * @param {boolean} [params.debug=false] - Turn on debug mode can print log in browser console log
  247. * @param {string} params.leaveUrl - required, Post message page url after leave meeting, like “http://www.zoom.us”
  248. * @param {string} [params.webEndpoint] - web domain option for PSO ENV, contract with zoom PSO supporter
  249. * @param {boolean} [params.showMeetingHeader=true] - Show or hide the meeting header, includes meeting number and topic
  250. * @param {boolean} [params.disableInvite=false] - Enable or disable invite function.
  251. * @param {boolean} [params.disableCallOut=false] - Enable or disable call out function.
  252. * @param {boolean} [params.disableRecord=false] - Enable or disable record function.
  253. * @param {boolean} [params.disableJoinAudio=false] - Enable or disable join audio function.
  254. * @param {boolean} [params.audioPanelAlwaysOpen=false] - Set the default state of the audio panel on join.
  255. * @param {boolean} [params.isSupportAV=true] - Enable or disable if you want use audio and video feature.
  256. * @param {boolean} [params.isSupportChat=true] - Enable or disable if you want use chat feature.
  257. * @param {boolean} [params.isSupportQA=true] - Enable or disable if you want use Webinar Q&A feature.
  258. * @param {boolean} [params.isSupportCC=true] - Enable or disable if you want use Meeting Closed Caption feature.
  259. * @param {boolean} [params.isSupportPolling=true] - Enable or disable if you want use Meeting Polling feature.
  260. * @param {boolean} [params.isSupportBreakout=true] - Enable or disable if you want use Meeting Breakout Room feature.
  261. * @param {boolean} [params.screenShare=true] - Enable or disable if you want use browser feature(only chrome).
  262. * @param {boolean} [params.rwcBackup=''] - rwc domain, if set enable multi-rwc feature
  263. * @param {boolean} [params.videoDrag=true] - Enable drag video tile
  264. * @param {boolean} [params.sharingMode='both'] - 'fit' - disable sharing "origin size"
  265. * @param {boolean} [params.videoHeader=true] - Enable show video tile header
  266. * @param {boolean} [params.isLockBottom=true] - alway show footer or auto hide footer
  267. * @param {boolean} [params.isSupportNonverbal=true] - Enable/Disable Noverbal feedback feature
  268. * @param {boolean} [params.isShowJoiningErrorDialog=true] - Enable/Disable Join error popup dialog when join meeting fail
  269. * @param {string} [params.inviteUrlFormat=''] - Customize the invite url format: https://yourdomain/{0}?pwd={1}. Only available v2.4.0+ and after asking Zoom to set the `Enable Client SDK Customize Invite Url` flag
  270. * @param {int} [params.loginWindow.width=400] - Login subWindow width
  271. * @param {int} [params.loginWindow.height=380] - Login subWindow height
  272. * @param {array} [params.meetingInfo=['topic','host','mn','pwd','telPwd','invite','participant','dc', 'enctype', 'report']] - choice which meeting info want to show
  273. * @param {boolean} [params.disableVoIP=false] - Enable/Disable VoIP feature
  274. * @param {boolean} [params.disableReport=false] - Enable/Disable Report feature
  275. * @param {boolean} [params.disablePreview=false] - Enable/Disable Audio and Video Preview
  276. * @param {boolean} [params.disableCORP=true] - Enable/Disable web isolation mode
  277. * @param {function} [params.onRetryCallback=null] - Set an on-retry callback function
  278. * @param {boolean} [params.enableHD=false] - Enable 720p (bandwidth and hardware restrictions still apply)
  279. * @param {boolean} [params.helper=''] - Set a helper page for working around CORS issues; typically this should be left blank
  280. * @param {boolean} [params.externalLinkPage=''] - Set an intermediary page for outgoing hyperlinks
  281. * @param {ZoomMtg.successCallback} [params.success] - Call back function on success
  282. * @param {ZoomMtg.errorCallback} [params.error] - Call back function on error
  283. // * @gifs gif1;gif2 - / ;en/1.5.1/images/tenor.gif;http://localhost:9999/images/tenor.gif
  284. * @example
  285. ZoomMtg.init({
  286. debug: true, //optional
  287. leaveUrl: 'http://www.zoom.us', //required
  288. webEndpoint: 'PSO web domain', // PSO option
  289. showMeetingHeader: false, //option
  290. disableInvite: false, //optional
  291. disableCallOut: false, //optional
  292. disableRecord: false, //optional
  293. disableJoinAudio: false, //optional
  294. audioPanelAlwaysOpen: true, //optional
  295. showPureSharingContent: false, //optional
  296. isSupportAV: true, //optional,
  297. isSupportChat: true, //optional,
  298. isSupportQA: true, //optional,
  299. isSupportPolling: true, //optional
  300. isSupportBreakout: true, //optional
  301. isSupportCC: true, //optional,
  302. screenShare: true, //optional,
  303. rwcBackup: '', //optional,
  304. videoDrag: true, //optional,
  305. sharingMode: 'both', //optional,
  306. videoHeader: true, //optional,
  307. isLockBottom: true, // optional,
  308. isSupportNonverbal: true, // optional,
  309. isShowJoiningErrorDialog: true, // optional,
  310. disablePreview: false, // optional
  311. disableCORP: true, // optional
  312. inviteUrlFormat: '', // optional
  313. loginWindow: { // optional,
  314. width: 400,
  315. height: 380
  316. },
  317. meetingInfo: [ // optional
  318. 'topic',
  319. 'host',
  320. 'mn',
  321. 'pwd',
  322. 'telPwd',
  323. 'invite',
  324. 'participant',
  325. 'dc',
  326. 'enctype',
  327. 'report'
  328. ],
  329. disableVoIP: false, // optional
  330. disableReport: false, // optional
  331. });
  332. */
  333. /**
  334. * @memberof ZoomMtg
  335. * @method join
  336. * @instance
  337. * @param {Object} params options
  338. * @param {int} params.meetingNumber - required
  339. * @param {string} params.userName - required
  340. * @param {string} params.userEmail - Webinar required
  341. * @param {string} params.passWord - required
  342. * @param {string} params.customerKey
  343. * @param {string} params.tk - optional
  344. * @param {string} params.zak - optional
  345. * @param {string} params.apiKey - optional, but either apiKey or sdkKey is required
  346. * @param {string} params.sdkKey - optional, but either apiKey or sdkKey is required
  347. * @param {string} params.signature - required
  348. * @param {ZoomMtg.successCallback} [params.success] - Call back function on success
  349. * @param {ZoomMtg.errorCallback} [params.error] - Call back function on error
  350. * @example
  351. * ZoomMtg.join({
  352. meetingNumber: 123456789,
  353. userName: 'User name',
  354. userEmail: '',
  355. passWord: '',
  356. apiKey: 'API_KEY',
  357. signature: 'SIGNATURE',
  358. success: function(res){console.log(res)},
  359. error: function(res){console.log(res)}
  360. });
  361. */
  362. /**
  363. * Show or hide invite function
  364. * @memberof ZoomMtg
  365. * @instance
  366. * @param {Object} params
  367. * @param {boolean} [params.show=true] - default true, required
  368. * @method showInviteFunction
  369. * @example
  370. * ZoomMtg.showInviteFunction({
  371. show: true
  372. });
  373. */
  374. /**
  375. * Show/Hide meeting header
  376. * @method showMeetingHeader
  377. * @memberof ZoomMtg
  378. * @instance
  379. * @param {Object} params
  380. * @param {boolean} [params.show=true] - default true, required
  381. * @example
  382. * ZoomMtg.showMeetingHeader({
  383. show: false
  384. });
  385. */
  386. /**
  387. * Show/Hide record function
  388. * @method showRecordFunction
  389. * @memberof ZoomMtg
  390. * @instance
  391. * @param {Object} params
  392. * @param {boolean} [params.show=true] - default true, required
  393. * @example
  394. * ZoomMtg.showRecordFunction({
  395. show: false
  396. });
  397. */
  398. /**
  399. * Show/Hide call out function
  400. * @method showCalloutFunction
  401. * @memberof ZoomMtg
  402. * @instance
  403. * @param {Object} params
  404. * @param {boolean} [params.show=true] - default true, required
  405. * @example
  406. * ZoomMtg.showCalloutFunction({
  407. show: false
  408. });
  409. */
  410. /**
  411. * Show/Hide join audio function
  412. * @method showJoinAudioFunction
  413. * @memberof ZoomMtg
  414. * @instance
  415. * @param {Object} params
  416. * @param {boolean} [params.show=true] - default true, required
  417. * @example
  418. * ZoomMtg.showJoinAudioFunction({
  419. show: false
  420. });
  421. */
  422. /**
  423. * Will not cover sharing content when set show as true
  424. * @method showPureSharingContent
  425. * @memberof ZoomMtg
  426. * @instance
  427. * @param {Object} params
  428. * @param {boolean} [params.show=true] - default true, required
  429. * @example
  430. * ZoomMtg.showPureSharingContent({
  431. show: false
  432. });
  433. */
  434. /**
  435. * Get current attendees list, inde 0 is current user
  436. * @method getAttendeeslist
  437. * @memberof ZoomMtg
  438. * @instance
  439. * @param {Object} params
  440. * @example
  441. * only support meeting
  442. * ZoomMtg.getAttendeeslist({});
  443. */
  444. /**
  445. * Get Breakout Room list and attendees
  446. * @method getBreakoutRoomList
  447. * @memberof ZoomMtg
  448. * @instance
  449. * @param {Object} params
  450. * @example
  451. * only support meeting
  452. * ZoomMtg.getBreakoutRoomList({});
  453. */
  454. /**
  455. * Get current user
  456. * @method getCurrentUser
  457. * @memberof ZoomMtg
  458. * @instance
  459. * @param {Object} params
  460. * @example
  461. * ZoomMtg.getCurrentUser({});
  462. */
  463. /**
  464. * Get current user
  465. * @method getCurrentMeetingInfo
  466. * @memberof ZoomMtg
  467. * @instance
  468. * @param {Object} params
  469. * @example
  470. * ZoomMtg.getCurrentMeetingInfo({});
  471. */
  472. /**
  473. * In meeting event
  474. * @method inMeetingServiceListener
  475. * @memberof ZoomMtg
  476. * @instance
  477. * @param {string} event event name
  478. * @param {function} callback callback function
  479. * @example
  480. * only support meeting
  481. * ZoomMtg.inMeetingServiceListener('onUserJoin', function (data) {
  482. console.log(data);
  483. });
  484. only support meeting
  485. ZoomMtg.inMeetingServiceListener('onUserLeave', function (data) {
  486. console.log(data);
  487. });
  488. ZoomMtg.inMeetingServiceListener('onUserIsInWaitingRoom', function (data) {
  489. console.log(data);
  490. });
  491. ZoomMtg.inMeetingServiceListener('onMeetingStatus', function (data) {
  492. // {status: 1(connecting), 2(connected), 3(disconnected), 4(reconnecting)}
  493. console.log(data);
  494. });
  495. ZoomMtg.inMeetingServiceListener('onPreviewPannel', function (data) {
  496. console.log('onPreviewPannel', data);
  497. });
  498. ZoomMtg.inMeetingServiceListener('receiveSharingChannelReady', function (data) {
  499. console.log('onShareStarted', data);
  500. });
  501. ZoomMtg.inMeetingServiceListener('onReceiveTranscriptionMsg', function (data) {
  502. console.log('onReceiveTranscriptionMsg', data);
  503. });
  504. ZoomMtg.inMeetingServiceListener('onReceiveTranslateMsg', function (data) {
  505. console.log('onReceiveTranslateMsg', data);
  506. });
  507. ZoomMtg.inMeetingServiceListener('onAudioQos', function (data) {
  508. console.log('onAudioQos', data);
  509. });
  510. ZoomMtg.inMeetingServiceListener('onVideoQos', function (data) {
  511. console.log('onVideoQos', data);
  512. });
  513. */
  514. /**
  515. * The method will invite yourself to join meeting by phone
  516. * @method callOut
  517. * @memberof ZoomMtg
  518. * @instance
  519. * @param {Object} params
  520. * @param {boolean} params.phoneNumber - call out number
  521. * @example
  522. * ZoomMtg.callOut({
  523. phoneNumber: '+1800...'
  524. });
  525. */
  526. /**
  527. * Invite by phone
  528. * @method inviteByPhone
  529. * @memberof ZoomMtg
  530. * @instance
  531. * @param {Object} params
  532. * @param {string} params.phoneNumber - phone number
  533. * @param {string} params.userName - username
  534. * @example
  535. ZoomMtg.inviteByPhone({
  536. phoneNumber: '+11111111',
  537. userName: 'username'
  538. });
  539. */
  540. /**
  541. * Invite CRC Device
  542. * @method inviteCRCDevice
  543. * @memberof ZoomMtg
  544. * @instance
  545. * @param {Object} params
  546. * @param {string} params.ip - CRC device ip
  547. * @param {int} params.type - device type
  548. * @example
  549. ZoomMtg.inviteCRCDevice({
  550. ip: '10.100.80.98',
  551. type: 1
  552. });
  553. */
  554. /**
  555. * mute attendee
  556. * @method mute
  557. * @memberof ZoomMtg
  558. * @instance
  559. * @param {Object} params
  560. * @param {int} params.userId - userId
  561. * @param {boolean} params.mute - true or false
  562. * @example
  563. * ZoomMtg.mute({
  564. userId: 16797696,
  565. mute: true
  566. });
  567. */
  568. /**
  569. * mute/unmute all attendee, the role must bee has this proviliage
  570. * @method muteAll
  571. * @instance
  572. * @memberof ZoomMtg
  573. * @param {Object} params
  574. * @param {boolean} params.muteAll - true or false
  575. * @example
  576. * ZoomMtg.muteAll({
  577. muteAll: true
  578. });
  579. */
  580. /**
  581. * rename attendee name, the role must bee has this proviliage
  582. * userId and oldName must bee right, otherwise you can't modify success
  583. * @method rename
  584. * @instance
  585. * @memberof ZoomMtg
  586. * @param {Object} params
  587. * @param {int} params.userId - userId
  588. * @param {string} params.oldName - ole name
  589. * @param {string} params.newName - new name
  590. * @example
  591. ZoomMtg.rename({
  592. userId: 123456,
  593. oldName: 'ole name',
  594. newName: 'new name'
  595. });
  596. */
  597. /**
  598. * kickoff attendee, must have proliliage
  599. * @method expel
  600. * @instance
  601. * @memberof ZoomMtg
  602. * @param {Object} params
  603. * @param {int} params.userId - expel user id
  604. * @example
  605. * ZoomMtg.expel({
  606. userId: 123456
  607. });
  608. */
  609. /**
  610. * record/disrecord meeting, host only
  611. * @method record
  612. * @instance
  613. * @memberof ZoomMtg
  614. * @param {Object} params
  615. * @param {boolean} params.record - true or false
  616. * @example
  617. * ZoomMtg.record({
  618. record: true
  619. });
  620. */
  621. /**
  622. * lock/unlock meeting, others can't join this meeting unless unlock meeting
  623. * @method lockMeeting
  624. * @instance
  625. * @memberof ZoomMtg
  626. * @param {Object} params
  627. * @param {boolean} params.lockMeeting - true=lock meeting or false=unlock
  628. * @example
  629. * ZoomMtg.lockMeeting({
  630. lockMeeting: true
  631. });
  632. */
  633. /**
  634. * leave meeting, if host leave, the meeting will end.
  635. * @method leaveMeeting
  636. * @instance
  637. * @memberof ZoomMtg
  638. * @param {Object} params
  639. * @example
  640. * ZoomMtg.leaveMeeting({});
  641. */
  642. /**
  643. * end meeting
  644. * @method endMeeting
  645. * @instance
  646. * @memberof ZoomMtg
  647. * @param {Object} params
  648. * @example
  649. * ZoomMtg.endMeeting({});
  650. */
  651. /**
  652. * allow attendee to joining meeting
  653. * @method putOnHold
  654. * @instance
  655. * @memberof ZoomMtg
  656. * @param {Object} params
  657. * @param {int} params.userId - user id
  658. * @param {boolean} params.hold - true= put attendee to waiting room. false=let him join meeting
  659. * @example
  660. * ZoomMtg.putOnHold({
  661. userId: 123456,
  662. hold: true
  663. });
  664. */
  665. /**
  666. * Subscribes to statistic qos data events.
  667. * You must call this before the event listeners receive any data
  668. * @method subscribeStatisticData
  669. * @instance
  670. * @memberof ZoomMtg
  671. * @param {Object} args
  672. * @param {boolean} args.audio - true to subscribe to audio qos data events
  673. * @param {boolean} args.video - true to subscribe to video qos data events
  674. * @example
  675. * ZoomMtg.subscribeStatisticData({ audio: true, video: true });
  676. */
  677. /**
  678. * Unsubscribes to statistic qos data events. Event listeners will stop receiving data
  679. * @method unSubscribeStatisticData
  680. * @instance
  681. * @memberof ZoomMtg
  682. * @param {Object} args
  683. * @param {boolean} args.audio - true to unsubscribe to audio qos data events
  684. * @param {boolean} args.video - true to unsubscribe to video qos data events
  685. * @example
  686. * ZoomMtg.unSubscribeStatisticData({ audio: true, video: true });
  687. */
  688. // $.i18n.reload(langArray[langI]);
  689. // ZoomMtg.reRender({"lang": langArray[langI]});
  690. module.exports = ZoomMtg;