機械翻訳について

startCommEvent

これは、コール受入済シナリオがあり、実際のコール接続を確立する必要がある場合にユーザーが公開する必要がある処理です

たとえば、エージェントがコール通知で「受理」をクリックすると、CTI統合コード・ベースは、同じサブスクリプションが追加されている場合、コマンドがAcceptのonAgentInteractionCommandイベントの通知を受け取ります。

コールacceptコマンドの通知を取得したら、CTI統合でstartCommEvent操作を公開する必要があります。これにより、コール接続が有効になり、このコールの相互作用コンポーネントがUIにロードされます。 送信イベントの場合も、CTIがonOutgoingEventのイベント通知を取得する場合は、送信コールを確立するためにstartCommEventパブリッシュAPIをコールする必要があります。

ノート: このAPIは、コール接続を確立するためにコールされます。 StartCommEvent操作リクエストに渡す必要があるinDataパラメータは、newCommEvent操作レスポンスで取得されるoutDataレスポンスと一致している必要があります。 同様に、StartCommEvent操作リクエストのinDataも、FusionアプリケーションからのOutGoingCallイベントに対するOutGoingCallEvent通知のレスポンスである必要があります。

startCommEvent操作を呼び出す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') as IPhoneContext;
    const request: IMcaStartCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('startCommEvent') as IMcaStartCommEventActionRequest;
    request.setAppClassification('appClassfication');
    request.setInputData(_inboundData);// _inboundData of type - IMcaStartCommInData
    const inData: IMcaStartCommInDataRequest = request.getInData();
    phoneContext.publish(request).then((res: IOperationResponse) => {
        const response: IMcaStartComActionResponse = res as IMcaStartComActionResponse;
    }).catch(() => {
    })         

startCommEvent操作を呼び出す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('appClassfication');
request.setInputData(_inboundData);// _inboundData of type - IMcaStartCommInData
const inData = request.getInData();
phoneContext.publish(request).then((res) => {
}).catch(() => {
})

UIイベント・フレームワーク統合オブジェクトと対話するためのEngagementContext

UEFを使用するstartCommEventのTypescriptの例を次に示します。この例では、engagementContextを使用して新しいページをポップし、エンゲージメントが開かれているのと同じタブ・コンテキストで別のフィールドをリスニングしてフィールド値を設定します。

 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: IMcaStartCommEventActionRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('startCommEvent') as IMcaStartCommEventActionRequest;
        request.setAppClassification('self.appClassfication');
        request.getInData().setChannelId('');
        const response: IMcaStartComActionResponse = await phoneContext.publish(request) as IMcaStartComActionResponse;
        const contactId: string = response.getResponseData().getEngagementContext().getEngagementData().getOutputData().getSVCMCA_CONTACT_NUMBER();

        // pop a contact page on success of startComm event publish
        const globalContext: IGlobalContext = await uiEventsFrameworkInstance.getGlobalContext();
        const requestObject: IPopFlowInAppRequest = uiEventsFrameworkInstance.requestHelper.createPublishRequest('PopOperation') as IPopFlowInAppRequest;
        requestObject.setRecordType('Contact');
        requestObject.setRecordType(contactId);
        requestObject.setOpenPageInNewBrowserTab(true);
        const popResponse: IPopFlowResponse = await globalContext.publish(requestObject) as IPopFlowResponse;

        // get active record in startComm event's engagementContext's tabContext.
        const engagementContext: IEngagementContext = response.getResponseData().getEngagementContext();
        const tabContext: ITabContext = await engagementContext.getTabContext();
        const activeRecord: IRecordContext = await tabContext.getActiveRecord();

        // listen to value change in problem description and set it to Notes field
        const fvcPayload = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent') as IFieldValueChangeEventRequest;
        fvcPayload.setFields(['ServiceRequest.ProblemDescription']);
        activeRecord.subscribe(fvcPayload, (fvcRes) => {
            const fvcResponse = fvcRes as IFieldValueChangeEventResponse;
            const setfieldValuePayload = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSetFieldValueOperation') as ISetFieldValueOperationRequest;
            setfieldValuePayload.field().setValue('ServiceRequest.TransferNote', fvcResponse.getResponseData().getNewValue());
            activeRecord.publish(setfieldValuePayload);
        });  

UEFを使用するstartCommEventのJavaScriptの例を次に示します。この例では、engagementContextを使用して新しいページをポップし、エンゲージメントが開かれているのと同じタブ・コンテキストで別のフィールドをリスニングしてフィールド値を設定します。

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);
const contactId = response.getResponseData().getEngagementContext().getEngagementData().getOutputData().getSVCMCA_CONTACT_NUMBER();

// pop a contact page on success of startComm event publish
const globalContext = await uiEventsFrameworkInstance.getGlobalContext();
const requestObject = uiEventsFrameworkInstance.requestHelper.createPublishRequest('PopOperation');
requestObject.setRecordType('Contact');
requestObject.setRecordType(contactId);
requestObject.setOpenPageInNewBrowserTab(true);
const popResponse = await globalContext.publish(requestObject);

// get active record in startComm event's engagementContext's tabContext.
const engagementContext = response.getResponseData().getEngagementContext();
const tabContext = await engagementContext.getTabContext();
const activeRecord = await tabContext.getActiveRecord();

// listen to value change in problem description and set it to Notes field
const fvcPayload = uiEventsFrameworkInstance.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent');
fvcPayload.setFields(['ServiceRequest.ProblemDescription']);
activeRecord.subscribe(fvcPayload, (fvcResponse) => {
    const setfieldValuePayload = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusSetFieldValueOperation');
    setfieldValuePayload.field().setValue('ServiceRequest.TransferNote', fvcResponse.getResponseData().getNewValue());
    activeRecord.publish(setfieldValuePayload);
});