機械翻訳について

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を取得し、wrapupset 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を取得し、wrapupget 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();
    });