機械翻訳について

Oracle Salesで機械学習モデルによって識別された類似レコードを表示するにはどうすればよいですか。

営業管理者は、すぐに使用できるテンプレート・モデルを使用して類似のレコードの折りたたみパネルにレコード詳細を表示することで、Oracle Salesで独自のカスタム機械学習モデルによって識別される類似のレコードを表示できます。

次の事前定義済構成を使用して、標準オブジェクトとカスタム・オブジェクトの両方のSales Machine Learningユース・ケース予測のカスタム・サブビュー・テンプレートを追加することもできます。
  • テンプレートcx-subview

    テンプレート定義は勘定科目に使用でき、必要に応じて新しい定義を作成できます。 他のオブジェクトについては、新しいサブビューを作成する必要があります。

  • コールバック関数

    予測レコードIDをフェッチします。

  • 動的表レイアウトsubviewLayout

    表示する予測レコードの属性を定義します。

類似レコードを表示するカスタム・サブビューの例を次に示します。

類似レコードが表示されたカスタム・サブビューのサンプル・スクリーンショット

類似レコードを表示するための既存テンプレートのクローニング

次の2つの方法を使用できます。

  1. 既存のテンプレートのクローニング: これには、既存のサブビュー・テンプレート「類似レコード・テンプレート」をコピーし、必要に応じて変更します。 既存のテンプレートがすでに要件に近づいており、アカウントにのみ使用できる場合は、この方が高速になります。
  2. 新しいテンプレートの追加: 新しいテンプレートを最初から作成し、最初から構造とパラメータを完全に制御できます。

アプローチに関係なく、最終的なテンプレートは次のようになります。

最終類似レコード・テンプレートのサンプル・コードのスクリーンショット

新しいテンプレートを作成する場合は、次のプロパティを構成する必要があります。
名前 説明
resource これは、作業中のオブジェクトの名前です(たとえば、取引先、見込み客、カスタムオブジェクト)。 別名は、複数のサブビューで同じリソース(オブジェクト)を使用できるため、サブビュー定義が一意になるようにします。 主キーは、アカウントのPartyId、リードのLeadId、カスタム・オブジェクトのIdなど、オブジェクトの識別子に対応している必要があります。
query keyをオブジェクト識別子(アカウントの場合はPartyId、リードの場合はLeadId、カスタム・オブジェクトの場合はIdなど)に設定する必要がある場合を除き、これは変更しないでください。 予測レコードIDが移入されるため、値は空になります。 これは、推奨IDをフェッチして割り当てるコールバック関数によって処理されます)。
ノート:
エラスティック・エンドポイントを使用してレコード詳細をコールするには、valueパラメータのprovider: "adfRest"を削除し、paramsで演算子キーが存在することを確認する必要があります。
context usecasecodeには、表示するモデルのユース・ケースIDを含める必要があります。 類似レコード・テンプレートに定義されているサブビューでは、salesMlSubviewパラメータを常にtrueに設定する必要があります。 これは、サブビューを識別し、予測レコードIDを取得するためのコールバック関数をトリガーするのに役立ちます。
title ここに入力した文字列値は、サブビューへのアクセス時にサブヘッダーとして使用されます。
subviewLayoutId アプリケーション拡張IDとスラッシュ(/)を接頭辞としてsubviewLayoutId.に追加することをお薦めします。 例: site_cxsales_Extension/similarRecordsSubviewLayout
(既存のサブビューをクローニングするのではなく)テンプレート・ページでサブビュー・テンプレートを手動で追加した場合、作成したサブビュー・テンプレートを公開するJSONコード・ブロックは生成されません。 次のように手動で追加する必要があります。
  1. 次のエントリをJSONファイルに追加します。 また、サブビュー・テンプレートを公開するためのキーとして、サブビュー・テンプレートに記載されている別名を追加する必要があります。

    サブビュー・テンプレートを公開するためのキーとしてJSON別名コード・ブロックを強調表示したスクリーンショット。

  2. サブビュー・ラベル変数のエントリを次のように追加します。
    ノート:標準オブジェクトには、subviewLabelという既存の変数がすでに存在します。

    サブビュー・テンプレートを公開するための変数エントリを強調表示したスクリーンショット。

    サブビュー・ラベルのエントリには、キーと値が必要です。 キーは、サブビュー・テンプレートを公開するために使用されるキーです。 値は、アクションバーに表示されるアクション名(接頭辞は'Show' )を決定します。

    「表示」アクションで使用されるサブビュー・ラベルの定数を示すサンプル・スクリーンショット

  3. コールバック関数を作成します。 サブビューをコールする前に、callbackhelperをすでに登録しておく必要があります。
    ノート:このコールバック・コールが登録されているリスナーからアクション・チェーンを追跡できます。

    アクション・チェーンを更新して機械学習固有のチェーンをコールし、予測レコードIDをフェッチし、サブビューの問合せパラメータを更新できます。 コードのサンプルを次に示します。

    define([
      'vb/action/actionChain',
      'vb/action/actions',
      'vb/action/actionUtils',
    ], (
      ActionChain,
      Actions,
      ActionUtils
    ) => {
      'use strict';
     
      class onBeforeInvokeSubviewCallbackChain extends ActionChain {
     
        /**
         * @param {Object} context
         */
        async run(context, { event }) {
          const { $layout, $extension, $responsive, $user } = context;
          const { query, parentResource, parentRow, fragmentContext } = event;
     
     
          if (fragmentContext.salesMlSubview) {
            // Calling our subview specific action chain.
            const callChainExecuteSalesMLQueryChainResult = await Actions.callChain(context,
             {
              chain: 'executeSalesMLQueryChain',
              params: {
                usecaseCode: fragmentContext.usecasecode,
                partyId: parentRow.Id
              },
            });
            if(callChainExecuteSalesMLQueryChainResult.length > 0){
              query[0].params[0].value = callChainExecuteSalesMLQueryChainResult;
            }
          }
             
          return event.detail.done(query);    
        }
      }
     
      return onBeforeInvokeSubviewCallbackChain;
    });
  4. エンドポイントをコールし、予測レコードIDのリストを返すアクション・チェーンを作成します。 この関数は、次のようにカスタム・オブジェクトの動的レイアウト(雷記号)から定義する必要があります。

    エンドポイントをコールし、予測レコードIDのリストを返すサンプル・アクション・チェーン

    コードのサンプルを次に示します。
    define([
      'vb/action/actionChain',
      'vb/action/actions',
      'vb/action/actionUtils',
      'vx/oracle_cx_salesUI/ui/self/applications/cx-sales/resources/utils/RestHelperEndpoint',
    ], (
      ActionChain,
      Actions,
      ActionUtils,
      RestHelperEndpoint
    ) => {
      'use strict';
     
      class executeSalesMLQueryChain extends ActionChain {
     
        /**
         * Action chain which calls salesMLQuery details when similar records subview is called
         * @param {Object} context
         * @param {Object} params
         * @param {string} params.usecaseCode usecase code of the salesML model we want to call
         * @param {string} params.partyId Id of the record we need to fetch predictions for
         */
        async run(context, { usecaseCode, partyId }) {
          const { $layout, $extension, $responsive, $user } = context;
          let similarRecordsRest = RestHelperEndpoint.get("cx_salesml/postSalesMLQueryAPI");
          let similarRecordsBody = {
            "UseCaseCode": usecaseCode,
            "QueryMetadata": "whereClause:Id =" + partyId + ";numberOfRows:5"
          };
          let recordIds = [];
          try {
            const similarRecordsResponse = await similarRecordsRest.body(similarRecordsBody).fetch();
            if (similarRecordsResponse && similarRecordsResponse.body) {
              let similarRecordsJSON = similarRecordsResponse.body;
              if (similarRecordsJSON && Array.isArray(similarRecordsJSON)) {
                for (let similar of similarRecordsJSON){
                  if(recordIds.length >= 5)
                    break;
                  recordIds.push(parseInt(similar.PARTYID, 10));
                }
              }
            }
          }catch(e){
            //Logger.info('similar-records-subview exception: ' + e);
          }
          return recordIds;
        }
      }
     
      return executeSalesMLQueryChain;
    });
  5. 次のようにサブビュー・レイアウトを作成します。

    ルール・セットの「動的表」セクションのサンプル・スクリーンショット