diff --git a/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts b/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts index ed45d18..af7d1bc 100644 --- a/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts +++ b/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts @@ -12,6 +12,7 @@ export enum MessagingType { ON_AMEYO_AGENT_ON_BREAK = 'onAmeyoAgentOnBreak', ON_AMEYO_FORCED_LOGOUT = 'onAmeyoForcedLogout', ON_AMEYO_CALL_TRANSFER = 'onAmeyoCallTransfer', + ON_AMEYO_AVAILABILITY_CHANGE = 'onAmeyoAvailabilityChange' } @@ -116,16 +117,16 @@ function extractUserCallModelUpdatedPush(rawResponse) { } } if (jsonData?.pushType === pushResponseTypes.UserCCRuntimeUpdatedPush) { + console.log('payload for user runtime update push'); const payload = jsonData?.data; //handle ameyo erroronous condition - if (payload?.isOnBreak) { - window.postMessage({ - type: MessagingType.ON_AMEYO_AGENT_ON_BREAK, - data: { - reason: payload, - } - }); - } + window.postMessage({ + type: messagingType.ON_AMEYO_AVAILABILITY_CHANGE, + data:{ + isOnBreak: payload?.isOnBreak, + reason: payload?.statusDescription + } + }) } if (jsonData?.pushType == pushResponseTypes.UserLoggedOffPush) { const payload = jsonData?.data; diff --git a/packages/adapter-ameyo/lib/main.ts b/packages/adapter-ameyo/lib/main.ts index 72731a6..a95ed9a 100644 --- a/packages/adapter-ameyo/lib/main.ts +++ b/packages/adapter-ameyo/lib/main.ts @@ -39,7 +39,7 @@ class AmeyoAdapter implements IAdapter { onCallDisconnected: (data: StateType) => void; onCallIncoming: (data: StateType) => void, onAdapterReady: () => void, - onAgentAvailabilityChange: (isAgentAvailable: boolean) => void + onAgentAvailabilityChange: (isAgentAvailable: boolean, reason: string) => void onForcedLogout: () => void, onLoginFailed: (err: GenericObject)=>void onAgentsForCallTransfer: (data: GenericObject) => void @@ -186,9 +186,6 @@ class AmeyoAdapter implements IAdapter { } if (payload?.data?.requestKey === RequestKeys.AMEYO_AVAILABLE) { setAutoStatus(this.sessionId); - this.isAgentAvailable = true; - window.postMessage({type: 'onAmeyoAvailabiltyChange', data: true}); - this.callbacks.onAgentAvailabilityChange(true) } if (payload?.data?.requestKey === RequestKeys.OMNIQUEUE_SERVICE) { @@ -198,13 +195,9 @@ class AmeyoAdapter implements IAdapter { autoSelectExtension(this.sessionId, this.userName.toLowerCase()); this.callbacks.onAdapterReady(); this.currentCallState = CALL_STATES.IDLE; - this.callbacks.onAgentAvailabilityChange(true); - window.postMessage({type: 'onAmeyoAvailabiltyChange', data: false},); } if (payload?.data?.requestKey === RequestKeys.AMEYO_ON_BREAK) { setAutoStatus(this.sessionId); - this.isAgentAvailable = false; - this.callbacks.onAgentAvailabilityChange(false); window.postMessage({type: 'onAmeyoAvailabiltyChange', data: false},); } if (payload?.data?.requestKey === RequestKeys.GET_AGENTS_FOR_CALL_TRANSFER) { @@ -243,9 +236,11 @@ class AmeyoAdapter implements IAdapter { audioElement?.play(); } - if (data?.type === MessagingType.ON_AMEYO_AGENT_ON_BREAK) { - this.isAgentAvailable = false; - this.callbacks.onAgentAvailabilityChange(false); + if (data?.type === MessagingType.ON_AMEYO_AVAILABILITY_CHANGE) { + this.isAgentAvailable = !data?.data?.isOnBreak; + this.callbacks.onAgentAvailabilityChange(this.isAgentAvailable, data?.data?.reason || ''); + window.postMessage({type: 'onAmeyoAvailabiltyChange', data: this.isAgentAvailable,}); + } if (data?.type === MessagingType.ON_AMEYO_FORCED_LOGOUT) { this.callbacks.onForcedLogout() @@ -275,7 +270,7 @@ class AmeyoAdapter implements IAdapter { this.callbacks.onAdapterReady = callback; } - registerOnAgentAvailabilityChange(callback: (isAgentAvailable: boolean) => void) { + registerOnAgentAvailabilityChange(callback: (isAgentAvailable: boolean, reason: string) => void) { console.log('registerOnAgentAvailabilityChange'); this.callbacks.onAgentAvailabilityChange = callback; } diff --git a/packages/adapter-ameyo/types/MessagingType.ts b/packages/adapter-ameyo/types/MessagingType.ts index 3b92302..0a7aeb4 100644 --- a/packages/adapter-ameyo/types/MessagingType.ts +++ b/packages/adapter-ameyo/types/MessagingType.ts @@ -7,6 +7,7 @@ ON_AMEYO_AGENT_ON_BREAK = 'onAmeyoAgentOnBreak', ON_AMEYO_FORCED_LOGOUT = 'onAmeyoForcedLogout', ON_AMEYO_CALL_TRANSFER = 'onAmeyoCallTransfer', + ON_AMEYO_AVAILABILITY_CHANGE= 'onAmeyoAvailablityChange' } diff --git a/packages/common/lib/Interfaces/IAdapter.ts b/packages/common/lib/Interfaces/IAdapter.ts index 08d0975..40a4a8f 100644 --- a/packages/common/lib/Interfaces/IAdapter.ts +++ b/packages/common/lib/Interfaces/IAdapter.ts @@ -8,7 +8,7 @@ class IAdapter { registerOnCallConnected(callback: (callState: GenericObject)=>void) {callback({})} registerOnCallDisconnected(callback: (callState: GenericObject)=>void) {callback({})} registerOnAdapterReady(callback: ()=> void) {callback()} - registerOnAgentAvailabilityChange(callback: (isAgentAvailable: boolean) => void) {callback(false)} + registerOnAgentAvailabilityChange(callback: (isAgentAvailable: boolean, reason: string) => void) {callback(false, '')} registerOnForcedLogoutListener(callback:()=>void) {callback()} registerOnLoginFailedListener(callback:()=>void) {callback()} registerOnAgentsForCallTransfer(callback: (data : GenericObject) => void) {callback({})} diff --git a/packages/core/lib/useCallSdk.ts b/packages/core/lib/useCallSdk.ts index ac6ec3e..8089a43 100644 --- a/packages/core/lib/useCallSdk.ts +++ b/packages/core/lib/useCallSdk.ts @@ -113,7 +113,7 @@ function UseCallSdk({AdapterClass, adapterOptions, metricsConfig, clickStreamCon } - function registerOnAgentAvailabilityChange(callback : (isAgentAvailable: boolean) => void) { + function registerOnAgentAvailabilityChange(callback : (isAgentAvailable: boolean, reason: string) => void) { adapter.registerOnAgentAvailabilityChange(callback); }