WrapUp同期
wrapUp
およびstartComm
およびcloseComm
の可用性の詳細は、getWrapupContextの項を参照してください。
様々なサプライヤが、メディア・ツールバーにWrapUp UIを実装し、特定のユース・ケースに基づいてFusion Serviceを実装します。 一貫性を確保するために、エージェントはメディア・ツールバーの「まとめ」とFusionサービスの「まとめ」の両方を更新して、両方のロケーションで同じ値を反映する必要があります。 このような場合、エージェントはデータを更新するために両方のUIで同じ処理を実行する必要があります。 次の例は、このプロセスを最適化する方法を示しています。 UEFを使用すると、エージェントは1つのUIで操作を実行でき、アクションはラップ・アップ同期を介して他のラップ・アップに自動的に伝播されます。
いくつかのユースケースを次に示します。
- 外部ツールバーからの
Wrapup
の変更を検出するには、フィールド値変更イベントを使用します。 - 外部ツールバーから
Wrapup
内の特定のフィールドに値を設定するには、「フィールド値の設定」操作を使用します。 - 外部ツールバーから特定のフィールドに値を取得するには、「フィールド値の取得」操作を使用します。
- 外部ツールバーから
wrapUp
を保存するには、「保存」操作を使用します。 -
wrapUp
を正常に保存した後に保存が完了したことを確認するには、OnAfter保存イベントを使用します。 - 外部ツールバーから保存イベントを完全に制御するには、OnBeforeSaveイベントを使用します。
StartCommからのWrapUpコンテキストの取得
Typescriptの例を次に示します:
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaStartCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('startCommEvent') as IMcaStartCommEventActionRequest;
request.setAppClassification('self.appClassfication');
request.getInData().setChannelId('');
const response: IMcaStartComActionResponse = await phoneContext.publish(request) as IMcaStartComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
JavaScriptの例を次に示します:
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('startCommEvent');
request.setAppClassification('self.appClassfication');
request.getInData().setChannelId('');
const response = await phoneContext.publish(request) as IMcaStartComActionResponse;
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
CloseCommからのWrapUpコンテキストの取得
Typescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
JavaScriptの例を次に示します:
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request);
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
フィールド値設定操作
結果(WrapUp.ResolutionCd
)およびノート(WrapUp.CallNotes
)は、次の例に示すように、WrapUp
のデフォルト・フィールドです。 Visual Basic (VB)を使用して、WrapUp UIをカスタマイズできます。 デフォルト・フィールドに加えて、顧客はカスタム・フィールドをUIに組み込むこともできます。 UIに追加されるフィールド(デフォルトまたはカスタム)は、次の例に示すAPIでも使用できます。
CloseComm
からWrapUpRecordContext
を取得し、wrapup
でset field value
操作を実行する方法を示すTypescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
const requestObject: ISetFieldValueOperationRequest = (uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSetFieldValueOperation') as ISetFieldValueOperationRequest);
requestObject.field().setValue('WrapUp.ResolutionCd', 'ORA_SVC_DS_POSITIVE_OUTCOME');
requestObject.field().setValue('WrapUp.CallNotes', 'New Description');
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message as ISetFieldValueResponse;
// custom code
}).catch((error: IErrorData) => {
// custom code
});
次に、CloseComm
からWrapUpRecordContext
を取得し、wrapup
でフィールド値の設定操作を実行する方法を示すJavaScriptの例を示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request);
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSetFieldValueOperation');
requestObject.field().setValue('WrapUp.ResolutionCd', 'ORA_SVC_DS_POSITIVE_OUTCOME');
requestObject.field().setValue('WrapUp.CallNotes', 'New Description');
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message;
// custom code
}).catch((error) => {
// custom code
});
フィールド値の取得操作
結果(WrapUp.ResolutionCd
)およびノート(WrapUp.CallNotes
)は、次の例に示すように、WrapUp
のデフォルト・フィールドです。 Visual Basic (VB)を使用して、WrapUp UIをカスタマイズできます。 デフォルト・フィールドに加えて、顧客はカスタム・フィールドをUIに組み込むこともできます。 UIに追加されるフィールド(デフォルトまたはカスタム)は、次の例に示すAPIでも使用できます。
CloseComm
からWrapUpRecordContext
を取得し、wrapup
でget field value
操作を実行する方法を示すTypescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
const requestObject: IGetFieldValueOperationRequest = (uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusGetFieldValueOperation') as IGetFieldValueOperationRequest);
requestObject.setFields(['WrapUp.ResolutionCd', 'WrapUp.CallNotes']);
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message as ISetFieldValueResponse;
// custom code
}).catch((error: IErrorData) => {
// custom code
});
次に、CloseComm
からWrapUpRecordContext
を取得し、wrapup
でフィールド値の設定操作を実行する方法を示すJavaScriptの例を示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request);
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusGetFieldValueOperation');
requestObject.setFields(['WrapUp.ResolutionCd', 'WrapUp.CallNotes']);
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message;
// custom code
}).catch((error) => {
// custom code
});
保存操作
CloseComm
からWrapUpRecordContext
を取得し、wrapup
で保存操作を実行する方法のTypescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
const requestObject: IOperationRequest = (uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSaveRecordOperation') as IOperationRequest);
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message as ISetFieldValueResponse;
// custom code
}).catch((error: IErrorData) => {
// custom code
});
次に、CloseComm
からWrapUpRecordContext
を取得し、wrapup
で保存操作を実行する方法のJavaScriptの例を示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request);
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSaveRecordOperation');
wrapUpRecordContext.publish(requestObject).then((message) => {
const response = message;
// custom code
}).catch((error) => {
// custom code
});
フィールド値変更イベント
結果(WrapUp.ResolutionCd
)およびノート(WrapUp.CallNotes
)は、次の例に示すように、WrapUp
のデフォルト・フィールドです。 Visual Basic (VB)を使用して、WrapUp UIをカスタマイズできます。 デフォルト・フィールドに加えて、顧客はカスタム・フィールドをUIに組み込むこともできます。 UIに追加されるフィールド(デフォルトまたはカスタム)は、次の例に示すAPIでも使用できます。
CloseComm
からWrapUpRecordContext
を取得し、wrapup
からsubscribe field value change
イベントを実行する方法を示すTypescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
const requestObject: IFieldValueChangeEventRequest = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent') as IFieldValueChangeEventRequest;
requestObject.setFields(['WrapUp.ResolutionCd', 'WrapUp.CallNotes']);
wrapUpRecordContext.subscribe(requestObject, (message: IEventResponse) => {
const response = message as IFieldValueChangeEventResponse;
const fieldName: string = response.getResponseData().getFieldName();
const newValue: string | boolean | number = response.getResponseData().getNewValue();
const oldValue: string | boolean | number = response.getResponseData().getOldValue();
});
次に、CloseComm
からWrapUpRecordContext
を取得し、wrapup
からsubscribe field value change
イベントを実行する方法を示すJavaScriptの例を示します:
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent');
requestObject.setFields(['WrapUp.ResolutionCd', 'WrapUp.CallNotes']);
wrapUpRecordContext.subscribe(requestObject, (response) => {
const fieldName = response.getResponseData().getFieldName();
const newValue = response.getResponseData().getNewValue();
const oldValue = response.getResponseData().getOldValue();
});
OnAfterイベントの保存
CloseComm
からWrapUpRecordContext
を取得し、wrapup
からsubscribe onAfter change
イベントを実行する方法を示すTypescriptの例を次に示します:
/// <reference path="uiEventsFramework.d.ts"/>
const uiEventsFrameworkInstance: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext: IMultiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext: IPhoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request: IMcaCloseCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent') as IMcaCloseCommEventActionRequest;
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response: IMcaCloseComActionResponse = await phoneContext.publish(request) as IMcaCloseComActionResponse;
const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext: IRecordContext = await engagementContext.getWrapupContext();
const requestObject: IEventRequest = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusOnAfterSaveEvent') as IEventRequest;
wrapUpRecordContext.subscribe(requestObject, (message) => {
const oldObjectId: string = response.getResponseData().getOldObjectId();
const newObjectId: string = response.getResponseData().getObjectId();
const objectType: string = response.getResponseData().getObjectType();
});
次に、CloseComm
からWrapUpRecordContext
を取得し、wrapup
からsubscribe onAfter change
イベントを実行する方法を示すJavaScriptの例を示します:
const uiEventsFrameworkInstance = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('appname', 'v1');
const multiChannelAdaptorContext = await uiEventsFrameworkInstance.getMultiChannelAdaptorContext();
const phoneContext = await multiChannelAdaptorContext.getCommunicationChannelContext('PHONE');
const request = uiEventsFrameworkInstance.requestHelper.createPublishRequest('closeCommEvent');
request.setAppClassification('appClassfication');
request.setInputData({eventId: 'id'}); //input data and required details
request.setReason('WRAPUP');
const inData = request.getInData();
const response = await phoneContext.publish(request);
const engagementContext = response.getResponseData().getEngagementContext();
const wrapUpRecordContext = await engagementContext.getWrapupContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusOnAfterSaveEvent');
wrapUpRecordContext.subscribe(requestObject, (message) => {
const oldObjectId = response.getResponseData().getOldObjectId();
const newObjectId = response.getResponseData().getObjectId();
const objectType = response.getResponseData().getObjectType();
});