@webex/calling 3.0.0-next.23 → 3.0.0-next.24
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/CallHistory/CallHistory.js +5 -6
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/callHistoryFixtures.js +3 -6
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
- package/dist/CallHistory/constants.js +9 -18
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +18 -13
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/CallSettings.test.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +3 -4
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +2 -2
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +19 -13
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +2 -2
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js +11 -22
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallSettings/testFixtures.js +4 -8
- package/dist/CallSettings/testFixtures.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +17 -15
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +9 -7
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/callRecordFixtures.js +2 -4
- package/dist/CallingClient/callRecordFixtures.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +6 -6
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +49 -38
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +9 -8
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +3 -5
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +31 -33
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/callingClientFixtures.js +16 -32
- package/dist/CallingClient/callingClientFixtures.js.map +1 -1
- package/dist/CallingClient/constants.js +100 -200
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +5 -4
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +4 -4
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/line/types.js +6 -7
- package/dist/CallingClient/line/types.js.map +1 -1
- package/dist/CallingClient/registration/register.js +51 -42
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +5 -4
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/registerFixtures.js +5 -10
- package/dist/CallingClient/registration/registerFixtures.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +30 -19
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +4 -4
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/constants.js +10 -18
- package/dist/Contacts/constants.js.map +1 -1
- package/dist/Contacts/contactFixtures.js +26 -52
- package/dist/Contacts/contactFixtures.js.map +1 -1
- package/dist/Contacts/types.js +29 -9
- package/dist/Contacts/types.js.map +1 -1
- package/dist/Errors/catalog/CallError.js +3 -5
- package/dist/Errors/catalog/CallError.js.map +1 -1
- package/dist/Errors/catalog/CallingDeviceError.js +3 -5
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
- package/dist/Errors/catalog/ExtendedError.js +2 -3
- package/dist/Errors/catalog/ExtendedError.js.map +1 -1
- package/dist/Errors/catalog/LineError.js +3 -5
- package/dist/Errors/catalog/LineError.js.map +1 -1
- package/dist/Errors/types.js +15 -20
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/impl/index.js +2 -3
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Events/types.js +42 -51
- package/dist/Events/types.js.map +1 -1
- package/dist/Logger/index.js +1 -2
- package/dist/Logger/index.js.map +1 -1
- package/dist/Logger/index.test.js.map +1 -1
- package/dist/Logger/types.js +9 -12
- package/dist/Logger/types.js.map +1 -1
- package/dist/Metrics/index.js +2 -4
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +2 -2
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +15 -20
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/index.js +1 -2
- package/dist/SDKConnector/index.js.map +1 -1
- package/dist/SDKConnector/utils.js +1 -2
- package/dist/SDKConnector/utils.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +21 -12
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +2 -2
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +19 -11
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +5 -4
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +17 -12
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +17 -10
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +4 -4
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/constants.js +29 -58
- package/dist/Voicemail/constants.js.map +1 -1
- package/dist/Voicemail/voicemailFixture.js +35 -70
- package/dist/Voicemail/voicemailFixture.js.map +1 -1
- package/dist/common/Utils.js +5 -7
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +2 -2
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +41 -82
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +10 -20
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +30 -40
- package/dist/common/types.js.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -74,7 +74,7 @@ var SPARK_CALL_SESSION = {
|
|
|
74
74
|
isPMR: false,
|
|
75
75
|
correlationIds: ['58ea6cd9-852b-4a77-957f-e704c8b0e63e']
|
|
76
76
|
};
|
|
77
|
-
var MOCK_SESSION_EVENT = {
|
|
77
|
+
var MOCK_SESSION_EVENT = exports.MOCK_SESSION_EVENT = {
|
|
78
78
|
id: 'id',
|
|
79
79
|
data: {
|
|
80
80
|
userSessions: {
|
|
@@ -86,8 +86,7 @@ var MOCK_SESSION_EVENT = {
|
|
|
86
86
|
timestamp: 12345,
|
|
87
87
|
trackingId: 'tracking-id'
|
|
88
88
|
};
|
|
89
|
-
exports.
|
|
90
|
-
var MOCK_MULTIPLE_SESSIONS_EVENT = {
|
|
89
|
+
var MOCK_MULTIPLE_SESSIONS_EVENT = exports.MOCK_MULTIPLE_SESSIONS_EVENT = {
|
|
91
90
|
id: 'id',
|
|
92
91
|
data: {
|
|
93
92
|
userSessions: {
|
|
@@ -99,5 +98,4 @@ var MOCK_MULTIPLE_SESSIONS_EVENT = {
|
|
|
99
98
|
timestamp: 12345,
|
|
100
99
|
trackingId: 'tracking-id'
|
|
101
100
|
};
|
|
102
|
-
exports.MOCK_MULTIPLE_SESSIONS_EVENT = MOCK_MULTIPLE_SESSIONS_EVENT;
|
|
103
101
|
//# sourceMappingURL=callRecordFixtures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","WEBEX_CALL_SESSION","id","durationSecs","self","name","phoneNumber","url","sessionId","sessionType","SessionType","WEBEX_CALLING","startTime","endTime","direction","disposition","Disposition","INITIATED","other","isPrivate","callbackAddress","durationSeconds","joinedDurationSeconds","participantCount","links","locusUrl","conversationUrl","isDeleted","isPMR","correlationIds","SPARK_CALL_SESSION","SPARK","MOCK_SESSION_EVENT","data","userSessions","statusCode","eventType","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","timestamp","trackingId","
|
|
1
|
+
{"version":3,"names":["_types","require","WEBEX_CALL_SESSION","id","durationSecs","self","name","phoneNumber","url","sessionId","sessionType","SessionType","WEBEX_CALLING","startTime","endTime","direction","disposition","Disposition","INITIATED","other","isPrivate","callbackAddress","durationSeconds","joinedDurationSeconds","participantCount","links","locusUrl","conversationUrl","isDeleted","isPMR","correlationIds","SPARK_CALL_SESSION","SPARK","MOCK_SESSION_EVENT","exports","data","userSessions","statusCode","eventType","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","timestamp","trackingId","MOCK_MULTIPLE_SESSIONS_EVENT"],"sources":["callRecordFixtures.ts"],"sourcesContent":["import {CallSessionEvent, SessionType, Disposition, MOBIUS_EVENT_KEYS} from '../Events/types';\n\nconst WEBEX_CALL_SESSION = {\n id: 'd74d19cc-6aa7-f341-6012-aec433cc6f8d',\n durationSecs: 438,\n self: {\n id: 'a24027e7-9b6e-4047-a950-42f4492148ec',\n name: 'Mark',\n phoneNumber: '123456',\n },\n url: 'https://janus-a.wbx2.com/janus/api/v1/history/userSessions/d74d19cc-6aa7-f341-6012-aec433cc6f8d',\n sessionId: 'd74d19cc-6aa7-f341-6012-aec433cc6f8d',\n sessionType: SessionType.WEBEX_CALLING,\n startTime: '2022-08-02T10:45:21.565Z',\n endTime: '2022-08-02T10:53:01.624Z',\n direction: 'OUTGOING',\n disposition: Disposition.INITIATED,\n other: {\n id: 'c9bde63c-e3e2-4db4-ba45-0d6c698ffd65',\n name: 'test',\n isPrivate: false,\n callbackAddress: 'c9bde63c-e3e2-4db4-ba45-0d6c698ffd65',\n phoneNumber: '123456679',\n },\n durationSeconds: 438,\n joinedDurationSeconds: 457,\n participantCount: 2,\n links: {\n locusUrl: 'https://locus-a.wbx2.com/locus/api/v1/loci/f5dbe4da-663b-3f73-a2fc-3a2fb0f12080',\n conversationUrl:\n 'https://conv-a.wbx2.com/conversation/api/v1/conversations/c9252ff0-9de2-11ec-a582-59d00c02cca9',\n callbackAddress: '123-456-7890',\n },\n\n isDeleted: false,\n isPMR: false,\n correlationIds: ['58ea6cd9-852b-4a77-957f-e704c8b0e63e'],\n};\n\nconst SPARK_CALL_SESSION = {\n id: 'd74d19cc-6aa7-f341-6012-aec433cc6f8d',\n durationSecs: 438,\n self: {\n id: 'a24027e7-9b6e-4047-a950-42f4492148ec',\n name: 'Mark',\n phoneNumber: '123456',\n },\n url: 'https://janus-a.wbx2.com/janus/api/v1/history/userSessions/d74d19cc-6aa7-f341-6012-aec433cc6f8d',\n sessionId: 'd74d19cc-6aa7-f341-6012-aec433cc6f8d',\n sessionType: SessionType.SPARK,\n startTime: '2022-08-02T10:45:21.565Z',\n endTime: '2022-08-02T10:53:01.624Z',\n direction: 'OUTGOING',\n disposition: Disposition.INITIATED,\n other: {\n id: 'c9bde63c-e3e2-4db4-ba45-0d6c698ffd65',\n name: 'test',\n isPrivate: false,\n callbackAddress: 'c9bde63c-e3e2-4db4-ba45-0d6c698ffd65',\n phoneNumber: '123456679',\n },\n durationSeconds: 438,\n joinedDurationSeconds: 457,\n participantCount: 2,\n links: {\n locusUrl: 'https://locus-a.wbx2.com/locus/api/v1/loci/f5dbe4da-663b-3f73-a2fc-3a2fb0f12080',\n conversationUrl:\n 'https://conv-a.wbx2.com/conversation/api/v1/conversations/c9252ff0-9de2-11ec-a582-59d00c02cca9',\n callbackAddress: '123-456-7890',\n },\n\n isDeleted: false,\n isPMR: false,\n correlationIds: ['58ea6cd9-852b-4a77-957f-e704c8b0e63e'],\n};\n\nexport const MOCK_SESSION_EVENT: CallSessionEvent = {\n id: 'id',\n data: {\n userSessions: {\n userSessions: [WEBEX_CALL_SESSION],\n statusCode: 0,\n },\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n },\n timestamp: 12345,\n trackingId: 'tracking-id',\n};\n\nexport const MOCK_MULTIPLE_SESSIONS_EVENT: CallSessionEvent = {\n id: 'id',\n data: {\n userSessions: {\n userSessions: [WEBEX_CALL_SESSION, SPARK_CALL_SESSION],\n statusCode: 0,\n },\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n },\n timestamp: 12345,\n trackingId: 'tracking-id',\n};\n"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ var _common = require("../../../common");
|
|
|
20
20
|
/**
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
var CallerId = /*#__PURE__*/function () {
|
|
23
|
+
var CallerId = exports.CallerId = /*#__PURE__*/function () {
|
|
24
24
|
/**
|
|
25
25
|
* Start the callerId instance.
|
|
26
26
|
*
|
|
@@ -51,7 +51,7 @@ var CallerId = /*#__PURE__*/function () {
|
|
|
51
51
|
*/
|
|
52
52
|
(0, _createClass2.default)(CallerId, [{
|
|
53
53
|
key: "resolveCallerId",
|
|
54
|
-
value: function () {
|
|
54
|
+
value: (function () {
|
|
55
55
|
var _resolveCallerId = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(filter) {
|
|
56
56
|
var displayResult, isChanged;
|
|
57
57
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -116,9 +116,10 @@ var CallerId = /*#__PURE__*/function () {
|
|
|
116
116
|
*
|
|
117
117
|
* @param data - Entire URI string.
|
|
118
118
|
*/
|
|
119
|
+
)
|
|
119
120
|
}, {
|
|
120
121
|
key: "parseRemotePartyInfo",
|
|
121
|
-
value: function () {
|
|
122
|
+
value: (function () {
|
|
122
123
|
var _parseRemotePartyInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(data) {
|
|
123
124
|
var lastToken, externalId;
|
|
124
125
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
@@ -156,6 +157,7 @@ var CallerId = /*#__PURE__*/function () {
|
|
|
156
157
|
* @param paid - Entire sip uri. Can be PA-Id or From header.
|
|
157
158
|
* @returns - a collection of name and number.
|
|
158
159
|
*/
|
|
160
|
+
)
|
|
159
161
|
}, {
|
|
160
162
|
key: "parseSipUri",
|
|
161
163
|
value: function parseSipUri(paid) {
|
|
@@ -259,9 +261,7 @@ var CallerId = /*#__PURE__*/function () {
|
|
|
259
261
|
* @param webex -.
|
|
260
262
|
* @param emitterCb -.
|
|
261
263
|
*/
|
|
262
|
-
exports.
|
|
263
|
-
var createCallerId = function createCallerId(webex, emitterCb) {
|
|
264
|
+
var createCallerId = exports.createCallerId = function createCallerId(webex, emitterCb) {
|
|
264
265
|
return new CallerId(webex, emitterCb);
|
|
265
266
|
};
|
|
266
|
-
exports.createCallerId = createCallerId;
|
|
267
267
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","_interopRequireDefault","require","_constants","_SDKConnector","_common","CallerId","webex","emitter","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","callerInfo","getWebex","setWebex","_createClass2","key","value","_resolveCallerId","_asyncToGenerator2","_regenerator","mark","_callee","filter","displayResult","isChanged","wrap","_callee$","_context","prev","next","resolveCallerIdDisplay","sent","name","log","info","file","CALLER_ID_FILE","method","num","avatarSrc","id","stop","resolveCallerId","_x","apply","arguments","_parseRemotePartyInfo","_callee2","data","lastToken","externalId","_callee2$","_context2","split","slice","includes","concat","warn","parseRemotePartyInfo","_x2","parseSipUri","paid","result","replace","nameMatch","FETCH_NAME","exec","substring","indexOf","length","trimEnd","phoneMatch","match","VALID_PHONE","fetchCallerDetails","callerId","undefined","from","exports","createCallerId","emitterCb"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport {CallerIdInfo} from '../../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../../SDKConnector/types';\nimport {DisplayInformation} from '../../../common/types';\nimport log from '../../../Logger/index';\nimport {CALLER_ID_FILE, FETCH_NAME, VALID_PHONE} from '../../constants';\n\nimport SDKConnector from '../../../SDKConnector';\nimport {ICallerId} from './types';\nimport {CallEmitterCallBack} from '../types';\nimport {resolveCallerIdDisplay} from '../../../common';\n\n/**\n *\n */\nexport class CallerId implements ICallerId {\n private webex: WebexSDK;\n\n private callerInfo: DisplayInformation;\n\n private sdkConnector: ISDKConnector;\n\n private emitter: CallEmitterCallBack;\n\n /**\n * Start the callerId instance.\n *\n * @param webex -.\n * @param callObj -.\n * @param emitter -.\n */\n constructor(webex: WebexSDK, emitter: CallEmitterCallBack) {\n this.sdkConnector = SDKConnector;\n this.callerInfo = {} as DisplayInformation;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.emitter = emitter;\n }\n\n /**\n * The handler which processes the data received from the SCIM query\n * performed through externalId.\n *\n * @param filter - A filter to be used for query.\n */\n private async resolveCallerId(filter: string) {\n const displayResult = (await resolveCallerIdDisplay(filter)) as DisplayInformation;\n let isChanged = false;\n\n /* It makes sense to emit only if the resolution gives different results than what we already have.\n * Note that results gathered from the SCIM Query is always given preference.\n */\n if (displayResult.name && this.callerInfo.name !== displayResult.name) {\n log.info('Updating Name after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.name = displayResult.name;\n isChanged = true;\n }\n\n if (displayResult.num && this.callerInfo.num !== displayResult.num) {\n log.info('Updating Number after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.num = displayResult.num;\n isChanged = true;\n }\n\n if (!this.callerInfo.avatarSrc || this.callerInfo.avatarSrc !== displayResult.avatarSrc) {\n log.info('Updating Avatar Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.avatarSrc = displayResult.avatarSrc;\n isChanged = true;\n }\n\n if (!this.callerInfo.id || this.callerInfo.id !== displayResult.id) {\n log.info('Updating User Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.id = displayResult.id;\n isChanged = true;\n }\n\n if (isChanged) {\n this.emitter(this.callerInfo);\n }\n }\n\n /**\n * Remote party Id parser.\n *\n * @param data - Entire URI string.\n */\n private async parseRemotePartyInfo(data: string) {\n /* External Id will be the last token if at all it exists */\n const lastToken = data.split(';').slice(-1)[0];\n\n if (lastToken.includes('externalId')) {\n const externalId = lastToken.split('=')[1];\n\n log.info(`externalId retrieved: ${externalId}`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n\n this.resolveCallerId(`id eq \"${externalId}\"`);\n } else {\n log.warn(`externalId not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n }\n }\n\n /**\n * Parser for SIP Uris.\n *\n * @param paid - Entire sip uri. Can be PA-Id or From header.\n * @returns - a collection of name and number.\n */\n private parseSipUri(paid: string) {\n const result = {} as DisplayInformation;\n\n const data = paid.split('@')[0].replace(/\"/g, '');\n\n const nameMatch = FETCH_NAME.exec(data);\n\n const num = data.substring(data.indexOf(':') + 1, data.length);\n\n if (nameMatch) {\n result.name = nameMatch[0].trimEnd();\n } else {\n log.warn(`Name field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n const phoneMatch = num.match(VALID_PHONE);\n\n if (phoneMatch && phoneMatch[0].length === num.length) {\n result.num = num;\n } else {\n log.warn(`Number field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n return result;\n }\n\n /**\n * The main entrypoint of the Caller-Id instance.\n * It returns intermediate name and number and starts the\n * caller Id resolution in background.\n *\n * @param callerId - CallerId data passed to us by Call Instance.\n * @returns - A collection of name and number.\n */\n public fetchCallerDetails(callerId: CallerIdInfo) {\n /* resetting previously set fields */\n this.callerInfo.id = undefined;\n this.callerInfo.avatarSrc = undefined;\n this.callerInfo.name = undefined;\n this.callerInfo.num = undefined;\n\n if ('p-asserted-identity' in callerId) {\n log.info('Parsing p-asserted-identity within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n const result = this.parseSipUri(callerId['p-asserted-identity'] as string);\n\n /* For P-Asserted-Identity, we update the callerInfo blindly, as it is of highest preference */\n this.callerInfo.name = result.name;\n this.callerInfo.num = result.num;\n }\n\n if (callerId.from) {\n log.info('Parsing from header within the remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n const result = this.parseSipUri(callerId.from);\n\n /* For From header , we should only update if not filled already by P-Asserted-Identity */\n if (!this.callerInfo.name && result.name) {\n log.info('Updating name field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.name = result.name;\n }\n\n if (!this.callerInfo.num && result.num) {\n log.info('Updating number field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.num = result.num;\n }\n }\n\n /* Emit the intermediate CallerId */\n\n if (this.callerInfo.name || this.callerInfo.num) {\n this.emitter(this.callerInfo);\n }\n\n /* We need to parse x-broadworks-remote-party-info if present asynchronously */\n if ('x-broadworks-remote-party-info' in callerId) {\n log.info('Parsing x-broadworks-remote-party-info within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n this.parseRemotePartyInfo(callerId['x-broadworks-remote-party-info'] as string);\n }\n\n return this.callerInfo;\n }\n}\n\n/**\n * To create CallerId instance.\n *\n * @param webex -.\n * @param emitterCb -.\n */\nexport const createCallerId = (webex: WebexSDK, emitterCb: CallEmitterCallBack): ICallerId =>\n new CallerId(webex, emitterCb);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_index","_interopRequireDefault","require","_constants","_SDKConnector","_common","CallerId","exports","webex","emitter","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","callerInfo","getWebex","setWebex","_createClass2","key","value","_resolveCallerId","_asyncToGenerator2","_regenerator","mark","_callee","filter","displayResult","isChanged","wrap","_callee$","_context","prev","next","resolveCallerIdDisplay","sent","name","log","info","file","CALLER_ID_FILE","method","num","avatarSrc","id","stop","resolveCallerId","_x","apply","arguments","_parseRemotePartyInfo","_callee2","data","lastToken","externalId","_callee2$","_context2","split","slice","includes","concat","warn","parseRemotePartyInfo","_x2","parseSipUri","paid","result","replace","nameMatch","FETCH_NAME","exec","substring","indexOf","length","trimEnd","phoneMatch","match","VALID_PHONE","fetchCallerDetails","callerId","undefined","from","createCallerId","emitterCb"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport {CallerIdInfo} from '../../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../../SDKConnector/types';\nimport {DisplayInformation} from '../../../common/types';\nimport log from '../../../Logger/index';\nimport {CALLER_ID_FILE, FETCH_NAME, VALID_PHONE} from '../../constants';\n\nimport SDKConnector from '../../../SDKConnector';\nimport {ICallerId} from './types';\nimport {CallEmitterCallBack} from '../types';\nimport {resolveCallerIdDisplay} from '../../../common';\n\n/**\n *\n */\nexport class CallerId implements ICallerId {\n private webex: WebexSDK;\n\n private callerInfo: DisplayInformation;\n\n private sdkConnector: ISDKConnector;\n\n private emitter: CallEmitterCallBack;\n\n /**\n * Start the callerId instance.\n *\n * @param webex -.\n * @param callObj -.\n * @param emitter -.\n */\n constructor(webex: WebexSDK, emitter: CallEmitterCallBack) {\n this.sdkConnector = SDKConnector;\n this.callerInfo = {} as DisplayInformation;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.emitter = emitter;\n }\n\n /**\n * The handler which processes the data received from the SCIM query\n * performed through externalId.\n *\n * @param filter - A filter to be used for query.\n */\n private async resolveCallerId(filter: string) {\n const displayResult = (await resolveCallerIdDisplay(filter)) as DisplayInformation;\n let isChanged = false;\n\n /* It makes sense to emit only if the resolution gives different results than what we already have.\n * Note that results gathered from the SCIM Query is always given preference.\n */\n if (displayResult.name && this.callerInfo.name !== displayResult.name) {\n log.info('Updating Name after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.name = displayResult.name;\n isChanged = true;\n }\n\n if (displayResult.num && this.callerInfo.num !== displayResult.num) {\n log.info('Updating Number after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.num = displayResult.num;\n isChanged = true;\n }\n\n if (!this.callerInfo.avatarSrc || this.callerInfo.avatarSrc !== displayResult.avatarSrc) {\n log.info('Updating Avatar Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.avatarSrc = displayResult.avatarSrc;\n isChanged = true;\n }\n\n if (!this.callerInfo.id || this.callerInfo.id !== displayResult.id) {\n log.info('Updating User Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.id = displayResult.id;\n isChanged = true;\n }\n\n if (isChanged) {\n this.emitter(this.callerInfo);\n }\n }\n\n /**\n * Remote party Id parser.\n *\n * @param data - Entire URI string.\n */\n private async parseRemotePartyInfo(data: string) {\n /* External Id will be the last token if at all it exists */\n const lastToken = data.split(';').slice(-1)[0];\n\n if (lastToken.includes('externalId')) {\n const externalId = lastToken.split('=')[1];\n\n log.info(`externalId retrieved: ${externalId}`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n\n this.resolveCallerId(`id eq \"${externalId}\"`);\n } else {\n log.warn(`externalId not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n }\n }\n\n /**\n * Parser for SIP Uris.\n *\n * @param paid - Entire sip uri. Can be PA-Id or From header.\n * @returns - a collection of name and number.\n */\n private parseSipUri(paid: string) {\n const result = {} as DisplayInformation;\n\n const data = paid.split('@')[0].replace(/\"/g, '');\n\n const nameMatch = FETCH_NAME.exec(data);\n\n const num = data.substring(data.indexOf(':') + 1, data.length);\n\n if (nameMatch) {\n result.name = nameMatch[0].trimEnd();\n } else {\n log.warn(`Name field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n const phoneMatch = num.match(VALID_PHONE);\n\n if (phoneMatch && phoneMatch[0].length === num.length) {\n result.num = num;\n } else {\n log.warn(`Number field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n return result;\n }\n\n /**\n * The main entrypoint of the Caller-Id instance.\n * It returns intermediate name and number and starts the\n * caller Id resolution in background.\n *\n * @param callerId - CallerId data passed to us by Call Instance.\n * @returns - A collection of name and number.\n */\n public fetchCallerDetails(callerId: CallerIdInfo) {\n /* resetting previously set fields */\n this.callerInfo.id = undefined;\n this.callerInfo.avatarSrc = undefined;\n this.callerInfo.name = undefined;\n this.callerInfo.num = undefined;\n\n if ('p-asserted-identity' in callerId) {\n log.info('Parsing p-asserted-identity within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n const result = this.parseSipUri(callerId['p-asserted-identity'] as string);\n\n /* For P-Asserted-Identity, we update the callerInfo blindly, as it is of highest preference */\n this.callerInfo.name = result.name;\n this.callerInfo.num = result.num;\n }\n\n if (callerId.from) {\n log.info('Parsing from header within the remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n const result = this.parseSipUri(callerId.from);\n\n /* For From header , we should only update if not filled already by P-Asserted-Identity */\n if (!this.callerInfo.name && result.name) {\n log.info('Updating name field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.name = result.name;\n }\n\n if (!this.callerInfo.num && result.num) {\n log.info('Updating number field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.num = result.num;\n }\n }\n\n /* Emit the intermediate CallerId */\n\n if (this.callerInfo.name || this.callerInfo.num) {\n this.emitter(this.callerInfo);\n }\n\n /* We need to parse x-broadworks-remote-party-info if present asynchronously */\n if ('x-broadworks-remote-party-info' in callerId) {\n log.info('Parsing x-broadworks-remote-party-info within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n this.parseRemotePartyInfo(callerId['x-broadworks-remote-party-info'] as string);\n }\n\n return this.callerInfo;\n }\n}\n\n/**\n * To create CallerId instance.\n *\n * @param webex -.\n * @param emitterCb -.\n */\nexport const createCallerId = (webex: WebexSDK, emitterCb: CallEmitterCallBack): ICallerId =>\n new CallerId(webex, emitterCb);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_testUtil","require","_","_Logger","_interopRequireDefault","waitForMsecs","msec","_promise","default","resolve","setTimeout","webex","getTestUtilsWebex","describe","dummyAvatar","dummyScimResponse","totalResults","itemsPerPage","startIndex","schemas","Resources","userName","emails","primary","type","value","name","givenName","familyName","phoneNumbers","entitlements","cisSyncSource","photos","id","meta","created","lastModified","lastLoginTime","version","location","organizationID","creator","modifier","displayName","active","licenseID","userSettings","sipAddresses","isTeamsOnJabberEnabled","isUCCallOnJabberEnabled","userType","mfaEnabled","teamsClusterId","request","mockResolvedValue","statusCode","body","callerId","it","createCallerId","log","expect","toBeTruthy","_asyncToGenerator2","_regenerator","mark","_callee","dummyCallerId","output","wrap","_callee$","_context","prev","next","from","fetchCallerDetails","toStrictEqual","num","avatarSrc","stop","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","_callee5","_callee5$","_context5","toBeFalsy","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","jest","spyOn","toHaveBeenCalledWith","file","method","toBe","undefined"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {DisplayInformation} from '../../../common/types';\nimport {getTestUtilsWebex} from '../../../common/testUtil';\nimport {createCallerId} from '.';\nimport log from '../../../Logger';\nimport {ICallerId} from './types';\n\nconst waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CallerId tests', () => {\n const dummyAvatar =\n 'https://avatar-int-us-east-1.webexcontent.com/Avtr~V1~1704d30d-a131-4bc7-9449-948487643793/V1~bf911e86a1561896d7d0053b46a8d0c9ed82a7bc434a1f84621c2c45cc825f37~3720694b1e4340818a3d12d70eb2b6e1~80';\n\n const dummyScimResponse = {\n totalResults: '1',\n itemsPerPage: '1',\n startIndex: '1',\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n Resources: [\n {\n userName: 'atlas.test.wxcwebrtc+user8@gmail.com',\n emails: [\n {\n primary: true,\n type: 'work',\n value: 'atlas.test.wxcwebrtc+user8@gmail.com',\n },\n ],\n name: {\n givenName: 'Cathy',\n familyName: 'James',\n },\n phoneNumbers: [\n {\n primary: true,\n type: 'work',\n value: '5008',\n },\n ],\n entitlements: [\n 'basic-meeting',\n 'basic-message',\n 'bc-sp-standard',\n 'screen-share',\n 'spark',\n 'spark-test-account',\n 'squared-call-initiation',\n 'webex-squared',\n ],\n cisSyncSource: 'SCIM',\n photos: [\n {\n type: 'photo',\n value: dummyAvatar,\n },\n {\n type: 'thumbnail',\n value: dummyAvatar,\n },\n ],\n id: '652fe0c7-05ce-4acd-8bda-9a080830187f',\n meta: {\n created: '2022-03-16T16:13:53.847Z',\n lastModified: '2022-05-31T14:39:12.782Z',\n lastLoginTime: '2022-05-31T14:39:12.780Z',\n version: 'W/\"66025591113\"',\n location:\n 'https://identitybts.webex.com/identity/scim/1704d30d-a131-4bc7-9449-948487643793/v1/Users/652fe0c7-05ce-4acd-8bda-9a080830187f',\n organizationID: '1704d30d-a131-4bc7-9449-948487643793',\n creator: '97fe25e3-d3e8-400e-856b-5b0cd5b0c790',\n modifier: '8c7abf2f-0c8e-49cf-b8e4-693d4ec7daee',\n },\n displayName: 'Cathy',\n active: true,\n licenseID: ['BCSTD_8c81f40c-e848-484e-8ca8-0fb6dabc75a5'],\n userSettings: ['{\"spark.signUpDate\":\"1648547902173\"}', '{\"user-origin\":\"admin-invited\"}'],\n sipAddresses: [\n {\n type: 'cloud-calling',\n value: 'atlas.test.wxcwebrtc+user8@webrtcmobius.call.wbx2.com',\n primary: true,\n },\n ],\n isTeamsOnJabberEnabled: false,\n isUCCallOnJabberEnabled: false,\n userType: 'user',\n mfaEnabled: false,\n teamsClusterId: 'urn:TEAM:us-east-1_int13',\n },\n ],\n };\n\n webex.request.mockResolvedValue({\n statusCode: 200,\n body: dummyScimResponse,\n });\n\n let callerId: ICallerId;\n\n it('create callerId Object', () => {\n callerId = createCallerId(webex, () => log.log('dummy print', {}));\n expect(callerId).toBeTruthy();\n });\n\n /* Follow tests will follow different combinations of the headers.\n * We will check whether the priority order is followed or not.\n */\n it(' When PA-ID, From header is present along with x-broad-works, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name is ignored and From's name should be taken, but number is taken from PAI */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:69fde5ad-fb8b-4a1b-9998-b0999e95719b@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is ignored and From's name, number should be taken */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5889');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID is present but From header is absent', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is taken */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID, From header is present but x-broad-works does not have externalId, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Since x-broadworks is not present , intermediary details should be retained */\n expect(callerId['callerInfo'].avatarSrc).toBeFalsy();\n expect(callerId['callerInfo'].id).toBeFalsy();\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n\n it(' When PA-ID, From header is present along with x-broad-works but SCIM query fails, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n webex.request.mockRejectedValue({\n statusCode: 404,\n body: dummyScimResponse,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 404', {\n file: 'utils',\n method: 'resolveCallerIdDisplay',\n });\n\n /* Should not be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toBe(undefined);\n expect(callerId['callerInfo'].id).toBe(undefined);\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_testUtil","require","_","_Logger","_interopRequireDefault","waitForMsecs","msec","_promise","default","resolve","setTimeout","webex","getTestUtilsWebex","describe","dummyAvatar","dummyScimResponse","totalResults","itemsPerPage","startIndex","schemas","Resources","userName","emails","primary","type","value","name","givenName","familyName","phoneNumbers","entitlements","cisSyncSource","photos","id","meta","created","lastModified","lastLoginTime","version","location","organizationID","creator","modifier","displayName","active","licenseID","userSettings","sipAddresses","isTeamsOnJabberEnabled","isUCCallOnJabberEnabled","userType","mfaEnabled","teamsClusterId","request","mockResolvedValue","statusCode","body","callerId","it","createCallerId","log","expect","toBeTruthy","_asyncToGenerator2","_regenerator","mark","_callee","dummyCallerId","output","wrap","_callee$","_context","prev","next","from","fetchCallerDetails","toStrictEqual","num","avatarSrc","stop","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","_callee5","_callee5$","_context5","toBeFalsy","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","jest","spyOn","toHaveBeenCalledWith","file","method","toBe","undefined"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {DisplayInformation} from '../../../common/types';\nimport {getTestUtilsWebex} from '../../../common/testUtil';\nimport {createCallerId} from '.';\nimport log from '../../../Logger';\nimport {ICallerId} from './types';\n\nconst waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CallerId tests', () => {\n const dummyAvatar =\n 'https://avatar-int-us-east-1.webexcontent.com/Avtr~V1~1704d30d-a131-4bc7-9449-948487643793/V1~bf911e86a1561896d7d0053b46a8d0c9ed82a7bc434a1f84621c2c45cc825f37~3720694b1e4340818a3d12d70eb2b6e1~80';\n\n const dummyScimResponse = {\n totalResults: '1',\n itemsPerPage: '1',\n startIndex: '1',\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n Resources: [\n {\n userName: 'atlas.test.wxcwebrtc+user8@gmail.com',\n emails: [\n {\n primary: true,\n type: 'work',\n value: 'atlas.test.wxcwebrtc+user8@gmail.com',\n },\n ],\n name: {\n givenName: 'Cathy',\n familyName: 'James',\n },\n phoneNumbers: [\n {\n primary: true,\n type: 'work',\n value: '5008',\n },\n ],\n entitlements: [\n 'basic-meeting',\n 'basic-message',\n 'bc-sp-standard',\n 'screen-share',\n 'spark',\n 'spark-test-account',\n 'squared-call-initiation',\n 'webex-squared',\n ],\n cisSyncSource: 'SCIM',\n photos: [\n {\n type: 'photo',\n value: dummyAvatar,\n },\n {\n type: 'thumbnail',\n value: dummyAvatar,\n },\n ],\n id: '652fe0c7-05ce-4acd-8bda-9a080830187f',\n meta: {\n created: '2022-03-16T16:13:53.847Z',\n lastModified: '2022-05-31T14:39:12.782Z',\n lastLoginTime: '2022-05-31T14:39:12.780Z',\n version: 'W/\"66025591113\"',\n location:\n 'https://identitybts.webex.com/identity/scim/1704d30d-a131-4bc7-9449-948487643793/v1/Users/652fe0c7-05ce-4acd-8bda-9a080830187f',\n organizationID: '1704d30d-a131-4bc7-9449-948487643793',\n creator: '97fe25e3-d3e8-400e-856b-5b0cd5b0c790',\n modifier: '8c7abf2f-0c8e-49cf-b8e4-693d4ec7daee',\n },\n displayName: 'Cathy',\n active: true,\n licenseID: ['BCSTD_8c81f40c-e848-484e-8ca8-0fb6dabc75a5'],\n userSettings: ['{\"spark.signUpDate\":\"1648547902173\"}', '{\"user-origin\":\"admin-invited\"}'],\n sipAddresses: [\n {\n type: 'cloud-calling',\n value: 'atlas.test.wxcwebrtc+user8@webrtcmobius.call.wbx2.com',\n primary: true,\n },\n ],\n isTeamsOnJabberEnabled: false,\n isUCCallOnJabberEnabled: false,\n userType: 'user',\n mfaEnabled: false,\n teamsClusterId: 'urn:TEAM:us-east-1_int13',\n },\n ],\n };\n\n webex.request.mockResolvedValue({\n statusCode: 200,\n body: dummyScimResponse,\n });\n\n let callerId: ICallerId;\n\n it('create callerId Object', () => {\n callerId = createCallerId(webex, () => log.log('dummy print', {}));\n expect(callerId).toBeTruthy();\n });\n\n /* Follow tests will follow different combinations of the headers.\n * We will check whether the priority order is followed or not.\n */\n it(' When PA-ID, From header is present along with x-broad-works, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name is ignored and From's name should be taken, but number is taken from PAI */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:69fde5ad-fb8b-4a1b-9998-b0999e95719b@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is ignored and From's name, number should be taken */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5889');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID is present but From header is absent', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is taken */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID, From header is present but x-broad-works does not have externalId, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Since x-broadworks is not present , intermediary details should be retained */\n expect(callerId['callerInfo'].avatarSrc).toBeFalsy();\n expect(callerId['callerInfo'].id).toBeFalsy();\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n\n it(' When PA-ID, From header is present along with x-broad-works but SCIM query fails, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n webex.request.mockRejectedValue({\n statusCode: 404,\n body: dummyScimResponse,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 404', {\n file: 'utils',\n method: 'resolveCallerIdDisplay',\n });\n\n /* Should not be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toBe(undefined);\n expect(callerId['callerInfo'].id).toBe(undefined);\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n});\n"],"mappings":"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"}
|