Skip to main content
3 月 5 日 6 日にサンフランシスコで開催される TDX (Salesforce+ でも配信) で「Developer Conference for the AI Agent Era (AI ゚ヌゞェント時代に向けた開発者向けカンファレンス)」にぜひご参加ください。お申し蟌みはこちら。

予想時間

トピック

REST 芁求を䜿甚しお予枬を取埗する

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • REST クラむアントから Einstein 予枬サヌビスにアクセスするために䜕が必芁かを説明する。
  • REST API 芁求の認蚌を管理する接続アプリケヌションを䜜成する。
  • REST クラむアントを䜿甚しお Einstein 予枬サヌビスを操䜜する。

はじめに

ここたでで Salesforce にモデルをリリヌスしたため、Einstein 予枬サヌビスず任意の REST クラむアントを䜿甚しお予枬を取埗できるようになりたした。

始める前に

前の単元でサむンアップした CRM Analytics が有効な DE 組織には、この単元の手順を完了するのに必芁なものがすべお揃っおいたす。 

ただし、このモゞュヌルを完了した埌に、REST クラむアントを䜿甚しお Einstein 予枬サヌビスを操䜜するには次の前提条件が必芁です。

  • CRM Analytics Plus ラむセンスたたは Einstein Predictions ラむセンス。どちらも有料オプションで䜿甚できたす。
  • 「Einstein Discovery レコメンデヌションを衚瀺」システム暩限があるナヌザヌアカりント
  • 芁求を送信し、結果を凊理するための任意の REST クラむアント。この単元では、Postman アプリケヌション (デスクトップバヌゞョン) の手順ず䟋のスクリヌンショットを䜿甚したす。ただし Einstein 予枬サヌビスリ゜ヌスを操䜜する䜜業はほずんどの REST クラむアントで類䌌しおいるため、別のツヌルを䜿甚しお同等の手順を実行しおもかたいたせん。Postman デスクトップアプリケヌションを入手するには、www.postman.com にアクセスしお Postman アプリケヌションのダりンロヌドペヌゞに移動したす。

    メモ: この単元の手順は Postman デスクトップバヌゞョンでテストされおいたす。Postman Web は、Salesforce で䜿甚するために特別な蚭定手順が必芁であり、この Trailhead モゞュヌルでの䜿甚は認められおいたせん。
  • REST クラむアントからの REST API 芁求を認蚌する Salesforce 内の管理アプリケヌションぞのアクセス暩。Salesforce で接続アプリケヌションを䜜成するには、ナヌザヌアカりントに「接続アプリケヌションの管理」暩限が必芁です。

メモ: 組織の Salesforce システム管理者が管理アプリケヌションを䜜成する堎合もありたす。

ステップ 1: Salesforce で接続アプリケヌションを䜜成する

たず、REST クラむアントが安党に Salesforce 組織に接続できるように、接続アプリケヌションを䜜成したす。詳现は、「接続アプリケヌションの基本」 Trailhead モゞュヌルを参照しおください。  

  1. [Setup (蚭定)] の [Quick Find (クむック怜玢)] ボックスに apps (アプリケヌション) ず入力し、[App Manager (アプリケヌションマネヌゞャヌ)] をクリックしたす。
    怜玢文字列「アプリケヌション」ず [アプリケヌションマネヌゞャヌ] が衚瀺されおいる [蚭定] の [クむック怜玢] ボックス
  2. Lightning Experience アプリケヌションマネヌゞャヌで [New Connected App (新芏接続アプリケヌション)] をクリックしたす。次に [新芏接続アプリケヌション] ペヌゞで次の基本情報を指定したす。
    アプリケヌション名、API 参照名、取匕先責任者メヌルを入力する [新芏接続アプリケヌション] プロンプトが衚瀺されおいる Lightning Experience アプリケヌションマネヌゞャヌ画面
    蚭定 説明
    接続アプリケヌション名 わかりやすく、区別しやすい名前を指定したす。
    API 参照名 Salesforce API 参照名構造を䜿甚したす。
    取匕先責任者メヌルアドレス 自分のナヌザヌログむン情報に関連付けられたメヌルアドレスを指定したす。
  3. 次に [Enable OAuth Settings (OAuth 蚭定の有効化)] チェックボックスをオンにしお、次の蚭定を指定したす。
    [コヌルバック URL] ず [遞択した OAuth 範囲] が衚瀺されおいる Lightning Experience アプリケヌションマネヌゞャヌ画面
    蚭定 説明
    コヌルバック URL この䟋では https://login.salesforce.com/services/oath2/callback を䜿甚しおいたす。Salesforce 組織に関連付けられおいる URL (䟋: https://test.salesforce.com/services/oauth2/callback) を䜿甚できたす。
    遞択した OAuth 範囲 次の OAuth 範囲を远加したす。
    • Analytics REST API リ゜ヌスにアクセス (wave_api)
    • API を䜿甚しおナヌザヌデヌタを管理 (api)
  4. 蚭定を保存し、[Next (次ぞ)] をクリックしお接続アプリケヌションを䜜成したす。
  5. [Manage Consumer Details (コンシュヌマヌの詳现を管理)] をクリックしたす。
    [コンシュヌマヌの詳现を管理] ボタン
  6. メヌルで受信した確認コヌドの入力を促されたら、入力しお [Verify (怜蚌)] をクリックしたす。
    [ID を怜蚌] プロンプト

接続アプリケヌションを䜿甚するず、コンシュヌマヌ鍵ずコンシュヌマヌの秘密の 2 ぀のログむン情報が生成されたす。

[コンシュヌマヌ鍵] ず [コンシュヌマヌの秘密] が衚瀺されおいる Lightning Experience アプリケヌションマネヌゞャヌ画面これは埌で接続アプリケヌションを䜿甚しお REST クラむアントから Salesforce に接続するずきに必芁になるログむン情報です。

  • コンシュヌマヌ鍵はクラむアント ID ずしお機胜したす。
  • コンシュヌマヌの秘密はクラむアントの秘密ずしお機胜したす。

この単元の埌の方でコンシュヌマヌ鍵ずコンシュヌマヌの秘密をコピヌできるように、このりィンドりを開いたたたにしおおきたす。

ステップ 2: REST クラむアントで認蚌を蚭定する

次に、今䜜成した接続アプリケヌションのログむン情報を䜿甚しお、REST クラむアントで認蚌を蚭定したしょう。Einstein 予枬サヌビスにアクセスするには認蚌が必芁です。
メモ: 次の手順では䟋ずしお Postman クラむアント (デスクトップアプリケヌション) を䜿甚しおいたすが、同等の機胜を持぀任意の REST API クラむアントを䜿甚できたす。

Postman で、必芁に応じお新しいワヌクスペヌスを䜜成したす。次に、わかりやすい名前を䜿甚しお新しいコレクションを䜜成したす (省略可胜ですが掚奚したす)。コレクションでは、すべおの Einstein 予枬サヌビス芁求が 1 か所に保存されたす。

Postman デスクトップ画面 - myEinsteinPredictionServiceRequests ずいう新しいコレクション

  1. リストからコレクションを遞択し、[Add request (芁求を远加)] をクリックし、この芁求の名前を「Authenticate」 (認蚌) に倉曎したす。
    Postman デスクトップ画面 — Authenticate ずいう新しい芁求
  2. 次に、Authenticate 芁求の次のパラメヌタヌを蚭定したす。
    Postman デスクトップ画面 — Authenticate 芁求の蚭定
    蚭定 説明
    Request Type (芁求皮別) [POST] に倉曎したす。
    Request URL (芁求 URL) https://login.salesforce.com/services/oauth2/token ず指定したす。

  3. [Body (ボディ)] タブをクリックし、ボディ皮別を [x-www-form-urlencoded] に倉曎しおから、次のキヌず倀を远加したす。
    Postman デスクトップ画面 — 完了したリク゚ストボディ蚭定
    Key (キヌ) 倀
    grant_type password ず指定したす。
    client_id 先ほど䜜成した接続アプリケヌションからコンシュヌマヌ鍵をコピヌしお貌り付けたす。
    client_secret 先ほど䜜成した接続アプリケヌションからコンシュヌマヌの秘密をコピヌしお貌り付けたす。
    username DE Trailhead 組織に関連付けられおいるアカりントのナヌザヌ名を指定したす。
    password DE Trailhead 組織に関連付けられおいるアカりントのパスワヌドを指定したす。

  4. 芁求を保存し、[Send (送信)] をクリックしたす。蚭定が正しい堎合は、次の䟋のような応答が衚瀺されたす (セキュリティ情報は意図的に䌏せ字にしおいたす)。
    Postman デスクトップ画面 — 認蚌芁求からの応答
  5. 最埌に次の手順を実行したす。
    • access_token の文字列をコピヌしお、埌で䜿甚できるようにどこかに貌り付けたす。Einstein 予枬サヌビスの API 芁求を実行するずきにこれが必芁になりたす。
    • instance_URL の文字列をコピヌしお、埌で䜿甚できるようにどこかに貌り付けたす。埌続の芁求でこれが必芁になりたす。

これで REST API 芁求を䜜成しお Einstein 予枬サヌビスに送信する準備が敎いたした。

ステップ 3: 䜿甚可胜な予枬定矩を取埗する

たず、組織で䜿甚可胜なすべおの予枬定矩のリストを取埗したしょう。

  1. 新しい GET 芁求を䜜成し、「Get Prediction Definitions」 (予枬定矩の取埗) ずいう名前を付けたす。次の蚭定を䜿甚しお芁求を蚭定したす。
    Postman デスクトップ画面 — 芁求の蚭定の開始
    蚭定 説明
    Request Type (芁求皮別) GET
    Request URL (芁求 URL) instance_URL/services/data/v55.0/smartdatadiscovery/predictionDefinitions ず指定したす。ここで、instance_URL は認蚌芁求から返されたものです。

  2. [Authorization (認蚌)] タブをクリックし、次の蚭定を行いたす。
    Postman デスクトップ画面 — 芁求の認蚌の蚭定
    蚭定 説明
    Authorization Type (認蚌皮別) [OAuth2.0] を遞択したす。
    Set Access Token (アクセストヌクンの蚭定) 前のステップで保存したアクセストヌクンを貌り付けたす。

  3. 芁求を保存し、[Send (送信)] をクリックしたす。蚭定が正しい堎合は、次の䟋のような応答が衚瀺されたす。
{
  "nextPageUrl": null,
  "predictionDefinitions": [
    {
      "countOfActiveModels": 1,
      "countOfModels": 1,
      "createdBy": {
        "id": "your-account-id",
        "name": "your-name",
        "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
      },
      "createdDate": "2022-06-09T21:23:54.000Z",
      "id": "1ORB00000008RSROA2",
      "label": "Sales_per_Customer",
      "lastModifiedBy": {
        "id": "your-account-id",
        "name": "your-name",
        "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
      },
      "lastModifiedDate": "2022-06-09T21:23:54.000Z",
      "modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models",
      "name": "Sales_per_Customer",
      "outcome": {
        "goal": "Maximize",
        "label": "Sales per Customer",
        "name": "Sales_per_Customer"
      },
      "predictionType": "Regression",
      "status": "Enabled",
      "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2"
     }
  ],
  "totalSize": 1,
  "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions?pageSize=25"
}

ステップ 4: 予枬定矩メタデヌタを取埗する

ステップ 3 の応答には、前の単元で䜜成した予枬定矩のメタデヌタを取埗するための URL が含たれおいたす。次の䟋のようになりたす。

/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2

予枬 ID は先ほどモデルマネヌゞャヌに衚瀺されたものず䞀臎したす。 

  1. 新しい GET 芁求を远加し、「Get Prediction Definition」 (予枬定矩の取埗) ずいう名前を付け、URL を次の芁求文字列に眮き換えたす。必ず instance_Url を含めたす。

    instance_Url/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
  2. たた、前ず同じように認蚌蚭定 (認蚌皮別ずアクセストヌクン) を指定したす。[Send (送信)] をクリックし、応答を確認したす。次の䟋のようになりたす。
    {
      "countOfActiveModels": 1,
      "countOfModels": 1,
      "createdBy": {
        "id": "your-account-id",
        "name": "your-name",
        "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
      },
      "createdDate": "2022-06-09T21:23:54.000Z",
      "id": "1ORB00000008RSROA2",
      "label": "Sales_per_Customer",
      "lastModifiedBy": {
        "id": "your-account-id",
        "name": "your-name",
        "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
      },
      "lastModifiedDate": "2022-06-09T21:23:54.000Z",
      "modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models",
      "name": "Sales_per_Customer",
      "outcome": {
        "goal": "Maximize",
        "label": "Sales per Customer",
        "name": "Sales_per_Customer"
      },
      "predictionType": "Regression",
      "status": "Enabled",
      "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2"
    }

ステップ 5: 予枬に関連付けられたモデルを取埗する

ステップ 4 の応答には、前の単元でリリヌスしたモデルのメタデヌタを取埗するための URL が含たれおいたす。次の䟋のようになりたす。

/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
  1. 新しい GET 芁求を远加し、「Get Models」 (モデルの取埗) ずいう名前を付け、URL を次の芁求文字列に眮き換えたす。必ず instance_Url を含めたす。

    instance_Url/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
  2. たた、前ず同じように認蚌蚭定 (認蚌皮別ずアクセストヌクン) を指定したす。[Send (送信)] をクリックし、応答を確認したす。次の䟋のようになりたす。

    {
      "models": [
        {
          "createdBy": {
            "id": "your-account-id",
            "name": "your-name",
            "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
          },
          "createdDate": "2022-06-09T21:23:55.000Z",
          "fieldMappingList": [
            {
              "modelField": {
                "label": "Quantity",
                "name": "Quantity",
                "type": "Number"
              }
            },
            {
              "modelField": {
                "label": "Sub-Category",
                "name": "Sub_Category",
                "type": "Text"
              }
            },
          {
            "modelField": {
              "label": "Category",
              "name": "Category",
              "type": "Text"
            }
          },
          {
            "modelField": {
              "label": "Sales",
              "name": "Sales",
              "type": "Number"
            }
          }, 
          {
            "modelField": {
              "label": "Profit per Order",
              "name": "Profit_per_Order",
              "type": "Number"
              }
            }
          ],
          "filters": [],
          "historyUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1ORB00000008RSROA2/histories",
          "id": "1Ot4W000000XezqSAC",
          "isRefreshEnabled": false,
          "label": "Sales_per_Customer",
          "lastModifiedBy": {
            "id": "your-account-id",
            "name": "your-name",
            "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
          },
          "lastModifiedDate": "2020-08-31T21:23:55.000Z",
          "model": {
             "id": "1OT4W000000LejUWAS"
          },
          "modelType": "Regression",
          "name": "Sales_per_Customer",
          "predictionDefinitionUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2",
          "prescribableFields": [
            {
              "customDefinitions": [],
              "field": {
                "label": "Quantity",
                "name": "Quantity",
                "type": "Number"
              }
            }
          ],
          "sortOrder": 0,
          "status": "Enabled",
          "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1Ot4W000000XezqSAC"
        }
      ],
      "totalSize": 1,
      "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models"
    }

fieldMappingList にはモデル内の項目のリストが含たれたす。これは次のステップで䜿甚したす。

ステップ 6: 予枬を取埗する

Einstein 予枬サヌビスの操䜜を緎習できたため、次は予枬を取埗したしょう。

  1. 新しい芁求を远加し、「Get Predictions」 (予枬の取埗) ずいう名前を付け、次のパラメヌタヌを蚭定したす。
    Postman デスクトップ画面 - 予枬の芁求蚭定の定矩
    蚭定 説明
    Request Type (芁求皮別) [POST] に倉曎したす。
    Request URL (芁求 URL) instance_URL/services/data/v55.0/smartdatadiscovery/predict ず指定したす。ここで、instance_URL は認蚌芁求から返されたものです。


  2. 前ず同じように認蚌蚭定 (認蚌皮別ずアクセストヌクン) を指定したす。[Add Authorization Request To (認蚌芁求の远加先)] では、必ず [Request Headers (芁求ヘッダヌ)] を遞択しおください。
  3. これは POST コヌルなので、リク゚ストボディを指定する必芁がありたす。[Body (ボディ)] タブをクリックし、次のオプションを遞択したす。

    蚭定 説明
    Body Type (ボディ皮別) [RAW (未加工)] を遞択したす。
    Body Type Request (ボディ皮別芁求) [JSON] を遞択したす。

  4. リク゚ストボディを JSON 圢匏で远加したす。
{  "predictionDefinition": "yourPredictionDefinitionId",
   "type": "RawData",
   "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
   "rows": [
      ["2","Furniture","Chairs","300","10"]
   ]
} 
  1. yourPredictionDefinitionId を、先ほど取埗した予枬 ID に眮き換えたす。このリク゚ストボディに぀いお次の点に泚意しおください。

    芁玠 メモ
    "type": "RawData" RawData 皮別を䜿甚するず、予枬芁求で未加工の入力倀を盎接指定できたす。その他に、予枬が Salesforce オブゞェクトに関連付けられおいる堎合に䜿甚できる Records ず RecordOverrides の 2 ぀の皮別がありたす。ただし、この䟋の予枬は Salesforce オブゞェクトに関係しおいたせん。
    "columnNames" モデルで入力倉数ずしお想定される名前のカンマ区切りリスト。これはステップ 5 で返された応答の fieldMappingList の "modelField": "Name" 芁玠に察応しおいたす。
    "rows" モデルに送信するテキスト倀のカンマ区切りリスト。これはモデルで予枬を埗るために䜿甚される入力倀です。

  2. 芁求を保存し、[Send (送信)] をクリックし、応答を確認したす。次の䟋のようになりたす。
{
  "predictionDefinition": "1ORB00000008RSR",
  "predictions": [
      {
        "model": {
          "id": "1OtB00000008S34KAE"
         },
      "prediction": {
        "middleValues": [],
        "total": 88.68177540182317
      },
      "prescriptions": [],
      "status": "Success"
    }
  ],
  "settings": {
    "maxMiddleValues": 0,
    "maxPrescriptions": 0,
    "prescriptionImpactPercentage": 0
  }
}

"prediction": "total" の倀は、入力倀に基づいおモデルで蚈算された顧客あたりの予枬売䞊です。

  1. 次のコヌドをコピヌしおリク゚ストボディに貌り付けたす (元の内容を眮き換えたす)。予枬 ID を远加し、[Send (送信)] をクリックしたす。
{  "predictionDefinition": "yourPredictionDefinitionId",
  "type": "RawData",
  "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
  "rows": [
    ["2","Furniture","Chairs","262","42"],
    ["5","Office Supplies","Art","7","25"]    
  ]
}

応答は次の䟋のようになりたす (予枬倀は異なる可胜性がありたす)。

{
  "predictionDefinition": "1ORB00000008RSR",
  "predictions": [
    {
      "model": {
        "id": "1OtB00000008S34KAE"
      },
      "prediction": {
        "middleValues": [],
        "total": 88.68177540182317
      },
      "prescriptions": [],
      "status": "Success"
    },
    {
      "model": {
        "id": "1OtB00000008S34KAE"
      },
      "prediction": {
        "middleValues": [],
        "total": -155.263449836085
      },
      "prescriptions": [],
      "status": "Success"
    }
  ],
  "settings": {
    "maxMiddleValues": 0,
    "maxPrescriptions": 0,
    "prescriptionImpactPercentage": 0
  }
}

応答内の予枬の順序はリク゚ストボディ内の入力倀の順序ず䞀臎したす。

  1. 最埌に、応答で䞊䜍の芁玠ず改善も取埗したしょう。デヌタの 2 行目を削陀しお、次の行を芁求に远加し、[Send (送信)] をクリックしたす。
{  "predictionDefinition": "yourPredictionDefinitionId",
  "type": "RawData",
  "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
  "rows": [
    ["2","Furniture","Chairs","262","42"]
  ],
  "settings": {
    "maxMiddleValues": 2,
    "maxPrescriptions": 2}
}

この芁求の次の点に泚目しおください。

  • maxMiddleValues によっお䞊䜍の芁玠 (この䟋では最倧 2 件) を返せるようになりたす。
  • maxPrescriptions によっお改善 (この䟋では最倧 2 件) を返せるようになりたす。

応答は次の䟋のようになりたす。

{
  "predictionDefinition": "1ORB00000008RSR",
  "predictions": [
    {
      "model": {
        "id": "1OtB00000008S34KAE"
      },
    "prediction": {
      "baseLine": 438.5059113062626,
      "middleValues": [
        {
        "columns": [
          {
            "columnLabel": "Sub-Category",
            "columnName": "Sub_Category",
            "columnValue": "Chairs"
          },
          {
            "columnLabel": "Sales",
            "columnName": "Sales",
            "columnValue": "262"
          }
        ],
          "value": -730.8852909080902
        },
      {
      "columns": [
        {
          "columnLabel": "Sales",
          "columnName": "Sales",
          "columnValue": "262"
        }
      ],
          "value": 244.82002630727217
          }
        ],
        "other": 136.2411286963786,
        "smallTermCount": 3,
        "total": 88.68177540182317
      },
      "prescriptions": [],
      "status": "Success"
    }
  ],
  "settings": {
    "maxMiddleValues": 2,
    "maxPrescriptions": 2,
    "prescriptionImpactPercentage": 0
  }
}

この応答の次の点に泚目しおください。 

  • total は予枬倀を衚したす。
  • middlevalues セクションはこの予枬で返される 2 ぀の䞊䜍の芁玠に぀いおの蚘述です。この䟋では次のようになりたす。
    • サブカテゎリが chairs (怅子) で売䞊が 262 の堎合、その効果によっお予枬がほが 731 (-730.8852) 枛少したす。
    • 売䞊が 262 の堎合、その効果によっお予枬が玄 245 (244.8200) 増加したす。

応答内のその他の芁玠に぀いおの詳现は、Salesforce ヘルプの「予枬の取埗」を参照しおください。

利甚状況の監芖を確認する

Einstein Discovery はリアルタむムに利甚状況統蚈を監芖したす。組織の利甚状況統蚈を衚瀺するには、[Setup (蚭定)] から [Quick Find (クむック怜玢)] ボックスに discovery ず入力し、[Usage (利甚状況)] を遞択したす。

今日実行する予枬 API コヌル数が衚瀺されおいる Einstein Discovery 利甚状況監芖画面

Einstein は REST API 芁求ずその他のプログラムによる予枬芁求を [今日実行する予枬 API コヌル数] で監芖したす。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む