@webex/plugin-meetings 2.14.1 → 2.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/errors/parameter.js +1 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/constants.js +7 -3
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +21 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +14 -0
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/index.js +180 -119
- package/dist/meeting/index.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/package.json +6 -6
- package/src/common/errors/parameter.js +1 -1
- package/src/constants.js +3 -0
- package/src/locus-info/controlsUtils.js +11 -0
- package/src/locus-info/index.js +26 -0
- package/src/locus-info/selfUtils.js +12 -0
- package/src/meeting/index.js +124 -53
- package/src/metrics/constants.js +5 -1
- package/test/unit/spec/fixture/locus.js +404 -0
- package/test/unit/spec/locus-info/index.js +61 -0
- package/test/unit/spec/locus-info/selfConstant.js +1 -0
- package/test/unit/spec/meeting/index.js +229 -6
|
@@ -57,7 +57,11 @@ var BEHAVIORAL_METRICS = {
|
|
|
57
57
|
ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
|
|
58
58
|
VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
|
|
59
59
|
VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
|
|
60
|
-
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
|
|
60
|
+
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
|
|
61
|
+
MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
|
|
62
|
+
MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
|
|
63
|
+
MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
|
|
64
|
+
MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
|
|
61
65
|
};
|
|
62
66
|
exports.default = BEHAVIORAL_METRICS;
|
|
63
67
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE,6BAlDG;EAmDzBC,eAAe,EAAE,wBAnDQ;EAoDzBC,eAAe,EAAE,wBApDQ;EAqDzBC,iBAAiB,EAAE,0BArDM;EAsDzBC,iBAAiB,EAAE;AAtDM,CAA3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"contributors": [
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
27
|
-
"@webex/webex-core": "2.14.
|
|
28
|
-
"@webex/internal-plugin-mercury": "2.14.
|
|
29
|
-
"@webex/internal-plugin-conversation": "2.14.
|
|
27
|
+
"@webex/webex-core": "2.14.4",
|
|
28
|
+
"@webex/internal-plugin-mercury": "2.14.4",
|
|
29
|
+
"@webex/internal-plugin-conversation": "2.14.4",
|
|
30
30
|
"webrtc-adapter": "^7.7.0",
|
|
31
31
|
"lodash": "^4.17.21",
|
|
32
32
|
"uuid": "^3.3.2",
|
|
33
33
|
"global": "^4.4.0",
|
|
34
34
|
"ip-anonymize": "^0.1.0",
|
|
35
|
-
"@webex/common": "2.14.
|
|
35
|
+
"@webex/common": "2.14.4",
|
|
36
36
|
"bowser": "^2.11.0",
|
|
37
37
|
"sdp-transform": "^2.12.0",
|
|
38
38
|
"readable-stream": "^3.6.0",
|
|
39
|
-
"@webex/common-timers": "2.14.
|
|
39
|
+
"@webex/common-timers": "2.14.4",
|
|
40
40
|
"btoa": "^1.2.1",
|
|
41
41
|
"@webex/internal-media-core": "^0.0.6-beta",
|
|
42
42
|
"javascript-state-machine": "^3.1.0",
|
|
@@ -18,7 +18,7 @@ export default class ParameterError extends Error {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
this.name = ERROR_DICTIONARY.PARAMETER.NAME;
|
|
21
|
-
this.sdkMessage = ERROR_DICTIONARY.PARAMETER.MESSAGE;
|
|
21
|
+
this.sdkMessage = message || ERROR_DICTIONARY.PARAMETER.MESSAGE;
|
|
22
22
|
this.error = error;
|
|
23
23
|
|
|
24
24
|
this.code = ERROR_DICTIONARY.PARAMETER.CODE;
|
package/src/constants.js
CHANGED
|
@@ -129,6 +129,7 @@ export const _UNKNOWN_ = 'UNKNOWN';
|
|
|
129
129
|
|
|
130
130
|
export const _WEBEX_MEETING_ = 'WEBEX_MEETING';
|
|
131
131
|
export const _WAIT_ = 'WAIT';
|
|
132
|
+
export const _MOVE_MEDIA_ = 'MOVE_MEDIA';
|
|
132
133
|
|
|
133
134
|
// *********** PARTICIPANT DELTAS ***********
|
|
134
135
|
export const PARTICIPANT_DELTAS = {
|
|
@@ -637,6 +638,7 @@ export const LOCUS = {
|
|
|
637
638
|
export const LOCUSINFO = {
|
|
638
639
|
EVENTS: {
|
|
639
640
|
CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
|
|
641
|
+
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
640
642
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
641
643
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
642
644
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
@@ -652,6 +654,7 @@ export const LOCUSINFO = {
|
|
|
652
654
|
MEETING_INFO_UPDATED: 'MEETING_INFO_UPDATED',
|
|
653
655
|
MEETING_LOCKED: 'MEETING_LOCKED',
|
|
654
656
|
MEETING_UNLOCKED: 'MEETING_UNLOCKED',
|
|
657
|
+
SELF_OBSERVING: 'SELF_OBSERVING',
|
|
655
658
|
DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY'
|
|
656
659
|
}
|
|
657
660
|
};
|
|
@@ -35,6 +35,13 @@ ControlsUtils.parse = (controls) => {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
if (controls && controls.transcribe) {
|
|
39
|
+
parsedControls.transcribe = {
|
|
40
|
+
transcribing: controls.transcribe.transcribing,
|
|
41
|
+
caption: controls.transcribe.caption
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
return parsedControls;
|
|
39
46
|
};
|
|
40
47
|
|
|
@@ -63,6 +70,10 @@ ControlsUtils.getControls = (oldControls, newControls) => {
|
|
|
63
70
|
hasMeetingContainerChanged: current?.meetingContainer &&
|
|
64
71
|
!isEqual(previous?.meetingContainer?.meetingContainerUrl,
|
|
65
72
|
current?.meetingContainer?.meetingContainerUrl),
|
|
73
|
+
|
|
74
|
+
hasTranscribeChanged: current?.transcribe &&
|
|
75
|
+
!isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
|
|
76
|
+
(previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
|
|
66
77
|
}
|
|
67
78
|
};
|
|
68
79
|
};
|
package/src/locus-info/index.js
CHANGED
|
@@ -618,6 +618,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
618
618
|
hasRecordingChanged,
|
|
619
619
|
hasRecordingPausedChanged,
|
|
620
620
|
hasMeetingContainerChanged,
|
|
621
|
+
hasTranscribeChanged
|
|
621
622
|
},
|
|
622
623
|
current
|
|
623
624
|
} = ControlsUtils.getControls(this.controls, controls);
|
|
@@ -667,6 +668,21 @@ export default class LocusInfo extends EventsScope {
|
|
|
667
668
|
);
|
|
668
669
|
}
|
|
669
670
|
|
|
671
|
+
if (hasTranscribeChanged) {
|
|
672
|
+
const {transcribing, caption} = current.transcribe;
|
|
673
|
+
|
|
674
|
+
this.emitScoped(
|
|
675
|
+
{
|
|
676
|
+
file: 'locus-info',
|
|
677
|
+
function: 'updateControls'
|
|
678
|
+
},
|
|
679
|
+
LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,
|
|
680
|
+
{
|
|
681
|
+
transcribing, caption
|
|
682
|
+
}
|
|
683
|
+
);
|
|
684
|
+
}
|
|
685
|
+
|
|
670
686
|
this.controls = controls;
|
|
671
687
|
}
|
|
672
688
|
}
|
|
@@ -1015,6 +1031,16 @@ export default class LocusInfo extends EventsScope {
|
|
|
1015
1031
|
);
|
|
1016
1032
|
}
|
|
1017
1033
|
|
|
1034
|
+
if (parsedSelves.updates.isUserObserving) {
|
|
1035
|
+
this.emitScoped(
|
|
1036
|
+
{
|
|
1037
|
+
file: 'locus-info',
|
|
1038
|
+
function: 'updateSelf'
|
|
1039
|
+
},
|
|
1040
|
+
LOCUSINFO.EVENTS.SELF_OBSERVING
|
|
1041
|
+
);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1018
1044
|
|
|
1019
1045
|
this.emitScoped(
|
|
1020
1046
|
{
|
|
@@ -4,6 +4,8 @@ import {
|
|
|
4
4
|
_JOINED_,
|
|
5
5
|
_CALL_,
|
|
6
6
|
_WAIT_,
|
|
7
|
+
_MOVE_MEDIA_,
|
|
8
|
+
_OBSERVE_,
|
|
7
9
|
_LEFT_,
|
|
8
10
|
MEETING_END_REASON,
|
|
9
11
|
MEDIA_STATE,
|
|
@@ -81,6 +83,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
81
83
|
updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
|
|
82
84
|
updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
|
|
83
85
|
updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
|
|
86
|
+
updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
|
|
84
87
|
|
|
85
88
|
updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);
|
|
86
89
|
updates.audioStateChange = previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;
|
|
@@ -250,6 +253,15 @@ SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
|
|
|
250
253
|
return oldSelf.moderator !== changedSelf.moderator;
|
|
251
254
|
};
|
|
252
255
|
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @param {Object} oldSelf
|
|
259
|
+
* @param {Object} changedSelf
|
|
260
|
+
* @returns {Boolean}
|
|
261
|
+
* @throws {Error} if changed self was undefined
|
|
262
|
+
*/
|
|
263
|
+
SelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ && changedSelf && changedSelf.joinedWith?.intent?.type === _OBSERVE_;
|
|
264
|
+
|
|
253
265
|
/**
|
|
254
266
|
* @param {Object} oldSelf
|
|
255
267
|
* @param {Object} changedSelf
|
package/src/meeting/index.js
CHANGED
|
@@ -1593,6 +1593,24 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1593
1593
|
{meetingContainerUrl}
|
|
1594
1594
|
);
|
|
1595
1595
|
});
|
|
1596
|
+
|
|
1597
|
+
this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,
|
|
1598
|
+
({caption, transcribing}) => {
|
|
1599
|
+
if (transcribing && this.transcription && this.config.receiveTranscription) {
|
|
1600
|
+
this.receiveTranscription();
|
|
1601
|
+
}
|
|
1602
|
+
else if (!transcribing && this.transcription) {
|
|
1603
|
+
Trigger.trigger(
|
|
1604
|
+
this,
|
|
1605
|
+
{
|
|
1606
|
+
file: 'meeting/index',
|
|
1607
|
+
function: 'setupLocusControlsListener'
|
|
1608
|
+
},
|
|
1609
|
+
EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION,
|
|
1610
|
+
{caption, transcribing}
|
|
1611
|
+
);
|
|
1612
|
+
}
|
|
1613
|
+
});
|
|
1596
1614
|
}
|
|
1597
1615
|
|
|
1598
1616
|
/**
|
|
@@ -2885,7 +2903,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2885
2903
|
const audioStopped = audioTrack && audioTrack.readyState === ENDED;
|
|
2886
2904
|
const videoStopped = videoTrack && videoTrack.readyState === ENDED;
|
|
2887
2905
|
|
|
2888
|
-
|
|
2906
|
+
// triggers event for audio and video stop , sometime either audio or video one of them exists
|
|
2907
|
+
if (audioStopped || videoStopped) {
|
|
2889
2908
|
Trigger.trigger(
|
|
2890
2909
|
this,
|
|
2891
2910
|
{
|
|
@@ -2898,7 +2917,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2898
2917
|
);
|
|
2899
2918
|
}
|
|
2900
2919
|
else if (audioTrack || videoTrack) {
|
|
2901
|
-
LoggerProxy.logger.warn('Meeting:index#closeLocalStream -->
|
|
2920
|
+
LoggerProxy.logger.warn('Meeting:index#closeLocalStream --> Warning: track might already been ended or unavaliable.');
|
|
2902
2921
|
}
|
|
2903
2922
|
});
|
|
2904
2923
|
}
|
|
@@ -3397,7 +3416,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3397
3416
|
* @throws TranscriptionNotSupportedError
|
|
3398
3417
|
*/
|
|
3399
3418
|
isTranscriptionSupported() {
|
|
3400
|
-
if (this.
|
|
3419
|
+
if (this.locusInfo.controls.transcribe?.transcribing) {
|
|
3401
3420
|
return true;
|
|
3402
3421
|
}
|
|
3403
3422
|
|
|
@@ -3556,6 +3575,15 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3556
3575
|
* Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
|
|
3557
3576
|
*/
|
|
3558
3577
|
join(options = {}) {
|
|
3578
|
+
if (!this.webex.meetings.registered) {
|
|
3579
|
+
const errorMessage = 'Meeting:index#join --> Device not registered';
|
|
3580
|
+
const error = new Error(errorMessage);
|
|
3581
|
+
|
|
3582
|
+
LoggerProxy.logger.error(errorMessage);
|
|
3583
|
+
|
|
3584
|
+
return Promise.reject(error);
|
|
3585
|
+
}
|
|
3586
|
+
|
|
3559
3587
|
// If a join request is being processed, refer to the deferred promise.
|
|
3560
3588
|
if (this.deferJoin) {
|
|
3561
3589
|
return this.deferJoin;
|
|
@@ -3868,7 +3896,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3868
3896
|
mediaCapabilities: {
|
|
3869
3897
|
rx: {
|
|
3870
3898
|
audio: false,
|
|
3871
|
-
share:
|
|
3899
|
+
share: true,
|
|
3872
3900
|
share_audio: false,
|
|
3873
3901
|
video: false,
|
|
3874
3902
|
whiteboard: false
|
|
@@ -3886,16 +3914,73 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3886
3914
|
|
|
3887
3915
|
Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
|
|
3888
3916
|
|
|
3889
|
-
|
|
3890
|
-
|
|
3917
|
+
this.locusInfo.once(LOCUSINFO.EVENTS.SELF_OBSERVING, async () => {
|
|
3918
|
+
// Clean up the camera , microphone track and re initiate it
|
|
3891
3919
|
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3920
|
+
try {
|
|
3921
|
+
if (this.isSharing) {
|
|
3922
|
+
await this.stopFloorRequest();
|
|
3895
3923
|
}
|
|
3896
|
-
|
|
3924
|
+
const mediaSettings = {
|
|
3925
|
+
mediaDirection: {
|
|
3926
|
+
sendVideo: false,
|
|
3927
|
+
receiveVideo: false,
|
|
3928
|
+
sendAudio: false,
|
|
3929
|
+
receiveAudio: false,
|
|
3930
|
+
sendShare: false,
|
|
3931
|
+
receiveShare: true
|
|
3932
|
+
}
|
|
3933
|
+
};
|
|
3934
|
+
|
|
3935
|
+
// clean up the local tracks
|
|
3936
|
+
this.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
|
|
3937
|
+
|
|
3938
|
+
// close the existing local tracks
|
|
3939
|
+
await this.closeLocalStream();
|
|
3940
|
+
await this.closeLocalShare();
|
|
3941
|
+
|
|
3942
|
+
this.mediaProperties.unsetMediaTracks();
|
|
3943
|
+
|
|
3944
|
+
|
|
3945
|
+
// when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
|
|
3946
|
+
// once the DX answers we establish connection back the media server with only receiveShare enabled
|
|
3947
|
+
await this.reconnectionManager.reconnectMedia(mediaSettings)
|
|
3948
|
+
.then(() => {
|
|
3949
|
+
Metrics.sendBehavioralMetric(
|
|
3950
|
+
BEHAVIORAL_METRICS.MOVE_TO_SUCCESS,
|
|
3951
|
+
);
|
|
3952
|
+
});
|
|
3953
|
+
}
|
|
3954
|
+
catch (error) {
|
|
3955
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3956
|
+
Metrics.sendBehavioralMetric(
|
|
3957
|
+
BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
|
|
3958
|
+
{
|
|
3959
|
+
correlation_id: this.correlationId,
|
|
3960
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
3961
|
+
reason: error.message,
|
|
3962
|
+
stack: error.stack
|
|
3963
|
+
}
|
|
3964
|
+
);
|
|
3965
|
+
}
|
|
3966
|
+
});
|
|
3967
|
+
|
|
3968
|
+
LoggerProxy.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
|
|
3969
|
+
|
|
3970
|
+
return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true}).then(() => {
|
|
3971
|
+
this.meetingFiniteStateMachine.join();
|
|
3897
3972
|
}).catch((error) => {
|
|
3898
3973
|
this.meetingFiniteStateMachine.fail(error);
|
|
3974
|
+
Metrics.sendBehavioralMetric(
|
|
3975
|
+
BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
|
|
3976
|
+
{
|
|
3977
|
+
correlation_id: this.correlationId,
|
|
3978
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
3979
|
+
reason: error.message,
|
|
3980
|
+
stack: error.stack
|
|
3981
|
+
}
|
|
3982
|
+
);
|
|
3983
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3899
3984
|
|
|
3900
3985
|
return Promise.reject(error);
|
|
3901
3986
|
});
|
|
@@ -3909,54 +3994,38 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3909
3994
|
* @memberof Meeting
|
|
3910
3995
|
*/
|
|
3911
3996
|
moveFrom(resourceId) {
|
|
3997
|
+
// On moveFrom ask the developer to re capture it moveFrom then updateMedia
|
|
3912
3998
|
if (!resourceId) {
|
|
3913
3999
|
throw new ParameterError('Cannot move call without a resourceId.');
|
|
3914
4000
|
}
|
|
3915
4001
|
const oldCorrelationId = this.correlationId;
|
|
3916
4002
|
|
|
3917
|
-
this.id = uuid.v4();
|
|
3918
|
-
|
|
3919
|
-
this.webex.meetings.meetingCollection.set(this);
|
|
3920
|
-
|
|
3921
|
-
Metrics.postEvent({
|
|
3922
|
-
event: eventType.MEDIA_CAPABILITIES,
|
|
3923
|
-
meeting: this,
|
|
3924
|
-
data: {
|
|
3925
|
-
mediaCapabilities: {
|
|
3926
|
-
rx: {
|
|
3927
|
-
audio: true,
|
|
3928
|
-
share: true,
|
|
3929
|
-
share_audio: true,
|
|
3930
|
-
video: true,
|
|
3931
|
-
whiteboard: true
|
|
3932
|
-
},
|
|
3933
|
-
tx: {
|
|
3934
|
-
audio: true,
|
|
3935
|
-
share: true,
|
|
3936
|
-
share_audio: true,
|
|
3937
|
-
video: true,
|
|
3938
|
-
whiteboard: true
|
|
3939
|
-
}
|
|
3940
|
-
}
|
|
3941
|
-
}
|
|
3942
|
-
});
|
|
3943
4003
|
Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
|
|
3944
4004
|
|
|
3945
|
-
return MeetingUtil.joinMeetingOptions(this)
|
|
3946
|
-
.then((
|
|
3947
|
-
|
|
3948
|
-
|
|
3949
|
-
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
.
|
|
3956
|
-
|
|
3957
|
-
|
|
4005
|
+
return MeetingUtil.joinMeetingOptions(this)
|
|
4006
|
+
.then(() => MeetingUtil.leaveMeeting(this, {
|
|
4007
|
+
resourceId,
|
|
4008
|
+
correlationId: oldCorrelationId,
|
|
4009
|
+
moveMeeting: true
|
|
4010
|
+
}).then(() => {
|
|
4011
|
+
this.resourceId = '';
|
|
4012
|
+
Metrics.sendBehavioralMetric(
|
|
4013
|
+
BEHAVIORAL_METRICS.MOVE_FROM_SUCCESS,
|
|
4014
|
+
);
|
|
4015
|
+
})).catch((error) => {
|
|
4016
|
+
this.meetingFiniteStateMachine.fail(error);
|
|
4017
|
+
Metrics.sendBehavioralMetric(
|
|
4018
|
+
BEHAVIORAL_METRICS.MOVE_FROM_FAILURE,
|
|
4019
|
+
{
|
|
4020
|
+
correlation_id: this.correlationId,
|
|
4021
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
4022
|
+
reason: error.message,
|
|
4023
|
+
stack: error.stack
|
|
4024
|
+
}
|
|
4025
|
+
);
|
|
4026
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3958
4027
|
|
|
3959
|
-
return Promise.
|
|
4028
|
+
return Promise.reject(error);
|
|
3960
4029
|
});
|
|
3961
4030
|
}
|
|
3962
4031
|
|
|
@@ -4423,7 +4492,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4423
4492
|
if (!this.canUpdateMedia()) {
|
|
4424
4493
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.ALL, options);
|
|
4425
4494
|
}
|
|
4426
|
-
const {
|
|
4495
|
+
const {
|
|
4496
|
+
localStream, localShare, mediaSettings
|
|
4497
|
+
} = options;
|
|
4427
4498
|
|
|
4428
4499
|
const previousSendShareStatus = this.mediaProperties.mediaDirection.sendShare;
|
|
4429
4500
|
|
|
@@ -4433,7 +4504,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4433
4504
|
meetingId: this.id,
|
|
4434
4505
|
remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
|
|
4435
4506
|
enableRtx: this.config.enableRtx,
|
|
4436
|
-
enableExtmap: this.config.enableExtmap
|
|
4507
|
+
enableExtmap: this.config.enableExtmap,
|
|
4437
4508
|
})
|
|
4438
4509
|
.then((peerConnection) => {
|
|
4439
4510
|
LoggerProxy.logger.info(`${LOG_HEADER} PeerConnection received from updateMedia, ${peerConnection}`);
|
|
@@ -4462,7 +4533,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4462
4533
|
.sendRoapMediaRequest({
|
|
4463
4534
|
sdp: this.mediaProperties.peerConnection.sdp,
|
|
4464
4535
|
roapSeq: this.roapSeq,
|
|
4465
|
-
meeting: this // or can pass meeting ID
|
|
4536
|
+
meeting: this, // or can pass meeting ID
|
|
4466
4537
|
}),
|
|
4467
4538
|
{
|
|
4468
4539
|
header: `${LOG_HEADER} sendRoapMediaRequest being sent`,
|
package/src/metrics/constants.js
CHANGED
|
@@ -51,7 +51,11 @@ const BEHAVIORAL_METRICS = {
|
|
|
51
51
|
ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
|
|
52
52
|
VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
|
|
53
53
|
VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
|
|
54
|
-
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
|
|
54
|
+
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
|
|
55
|
+
MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
|
|
56
|
+
MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
|
|
57
|
+
MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
|
|
58
|
+
MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
|
|
55
59
|
};
|
|
56
60
|
|
|
57
61
|
|