From ccb72e7098637c252f0f35458635c932a4b0b8a6 Mon Sep 17 00:00:00 2001 From: Mayank Singh Date: Mon, 2 Dec 2024 20:34:09 +0530 Subject: [PATCH] NTP-15943 | registerOnCallTransfer --- .../adapter-ameyo/lib/assets/js/ajaxClient.ts | 17 ++++++++++++++--- packages/adapter-ameyo/lib/main.ts | 10 ++++++++++ packages/adapter-ameyo/types/MessagingType.ts | 3 ++- packages/common/lib/Interfaces/IAdapter.ts | 4 ++-- packages/core/lib/useCallSdk.ts | 5 +++++ 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts b/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts index 7973659..a74929d 100644 --- a/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts +++ b/packages/adapter-ameyo/lib/assets/js/ajaxClient.ts @@ -11,7 +11,7 @@ export enum MessagingType { ON_AMEYO_CALL_DISCONNECTED = 'onAmeyoCallDisconnected', ON_AMEYO_AGENT_ON_BREAK = 'onAmeyoAgentOnBreak', ON_AMEYO_FORCED_LOGOUT = 'onAmeyoForcedLogout', - + ON_AMEYO_CALL_TRANSFER = 'onAmeyoCallTransfer', } @@ -44,6 +44,7 @@ let http = createRequestObject(); enum pushResponseTypes { UserCallModelUpdatedPush = 'UserCallModelUpdatedPush', CustomerCallMemberUpdatedPush = 'CustomerCallMemberUpdatedPush', + UserCallMemberUpdatedPush = 'UserCallMemberUpdatedPush', CRMCreateNotifyPush = 'CRMCreateNotifyPush', UserCCRuntimeUpdatedPush = 'UserCCRuntimeUpdatedPush', UserLoggedOffPush = 'UserLoggedOffPush' @@ -86,7 +87,7 @@ function extractUserCallModelUpdatedPush(rawResponse) { res = jsonData; sendCallStatusMessage(res); } - if (jsonData.pushType === pushResponseTypes.CustomerCallMemberUpdatedPush) { + if (jsonData?.pushType === pushResponseTypes.CustomerCallMemberUpdatedPush) { const payload = jsonData?.data; // handle for transfer call if (payload?.isDisposing && @@ -94,7 +95,17 @@ function extractUserCallModelUpdatedPush(rawResponse) { payload?.status === 'hungup') sendCallStatusMessage(jsonData); } - if (jsonData.pushType === pushResponseTypes.UserCCRuntimeUpdatedPush) { + if (jsonData?.pushType === pushResponseTypes.UserCallMemberUpdatedPush) { + const payload = jsonData?.data; + // handle for transfer call + if (payload?.associationType === 'transfer.association' && ['ringing', 'connected', 'hungup'].includes(payload?.status)) { + window.postMessage({ + type: MessagingType.ON_AMEYO_CALL_TRANSFER, + data: payload + }) + } + } + if (jsonData?.pushType === pushResponseTypes.UserCCRuntimeUpdatedPush) { const payload = jsonData?.data; //handle ameyo erroronous condition if (payload?.isOnBreak) { diff --git a/packages/adapter-ameyo/lib/main.ts b/packages/adapter-ameyo/lib/main.ts index ca73f2b..45075b2 100644 --- a/packages/adapter-ameyo/lib/main.ts +++ b/packages/adapter-ameyo/lib/main.ts @@ -33,6 +33,7 @@ class AmeyoAdapter implements IAdapter { onAgentAvailabilityChange: (isAgentAvailable: boolean) => void onForcedLogout: () => void onAgentsForCallTransfer: (data: GenericObject) => void + onCallTransfer: (data: GenericObject) => void; }; private currentCallState: string; private eventListenerUrl: string; @@ -71,6 +72,8 @@ class AmeyoAdapter implements IAdapter { onForcedLogout: () => { }, onAgentsForCallTransfer: () => { + }, + onCallTransfer: () => { } }; this.sessionId = ''; @@ -194,6 +197,9 @@ class AmeyoAdapter implements IAdapter { if (data?.type === MessagingType.ON_AMEYO_FORCED_LOGOUT) { this.callbacks.onForcedLogout() } + if(data?.type === MessagingType.ON_AMEYO_CALL_TRANSFER){ + this.callbacks.onCallTransfer(data?.data); + } }; registerOnCallIncoming(callback: (callState: StateType) => void) { @@ -231,6 +237,10 @@ class AmeyoAdapter implements IAdapter { this.callbacks.onAgentsForCallTransfer = callback; } + registerOnCallTransfer(callback: (data: GenericObject) => void) { + this.callbacks.onCallTransfer = callback; + } + acceptCall() { console.log('acceptCall'); acceptSipCall(); diff --git a/packages/adapter-ameyo/types/MessagingType.ts b/packages/adapter-ameyo/types/MessagingType.ts index 2d46257..3b92302 100644 --- a/packages/adapter-ameyo/types/MessagingType.ts +++ b/packages/adapter-ameyo/types/MessagingType.ts @@ -6,7 +6,8 @@ ON_AMEYO_CALL_DISCONNECTED = 'onAmeyoCallDisconnected', ON_AMEYO_AGENT_ON_BREAK = 'onAmeyoAgentOnBreak', ON_AMEYO_FORCED_LOGOUT = 'onAmeyoForcedLogout', + ON_AMEYO_CALL_TRANSFER = 'onAmeyoCallTransfer', } -export default MessagingType; \ No newline at end of file +export default MessagingType; diff --git a/packages/common/lib/Interfaces/IAdapter.ts b/packages/common/lib/Interfaces/IAdapter.ts index 3b40da7..0458cdc 100644 --- a/packages/common/lib/Interfaces/IAdapter.ts +++ b/packages/common/lib/Interfaces/IAdapter.ts @@ -8,7 +8,7 @@ class IAdapter { registerOnAgentAvailabilityChange(callback: (isAgentAvailable: boolean) => void) {callback(false)} registerOnForcedLogoutListener(callback:()=>void) {callback()} registerOnAgentsForCallTransfer(callback: (data : GenericObject) => void) {callback({})} - + registerOnCallTransfer(callback: (data: GenericObject) => void) {callback({})} acceptCall() {} rejectCall() {} muteCall() {} @@ -22,7 +22,7 @@ class IAdapter { getAgentAvailability(): boolean {return false} getLatestCallState() {return {}} getAvailableAgentsForCallTransfer() {} - transferCallToAgent(data: GenericObject) {console.log("transfer call to agent", data)} + transferCallToAgent(data: GenericObject) {} } export default IAdapter; diff --git a/packages/core/lib/useCallSdk.ts b/packages/core/lib/useCallSdk.ts index 47c0311..15e5b84 100644 --- a/packages/core/lib/useCallSdk.ts +++ b/packages/core/lib/useCallSdk.ts @@ -112,6 +112,10 @@ function UseCallSdk({AdapterClass, adapterOptions}: { adapter.registerOnAgentsForCallTransfer(callback); } + function registerOnCallTransfer(callback: (data: GenericObject) => void) { + adapter.registerOnCallTransfer(callback); + } + function acceptCall() { adapter.acceptCall(); } @@ -169,6 +173,7 @@ function UseCallSdk({AdapterClass, adapterOptions}: { registerOnAgentAvailabilityChange, registerOnForcedLogoutListener, registerOnAgentsForCallTransfer, + registerOnCallTransfer, acceptCall, rejectCall, disposeCall,