4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Einstein Discoveryで作ったAIモデルのSalesforce側への実装手順

Last updated at Posted at 2019-04-18

こちらに書いたものの実装手順です
https://note.mu/geeorgey/n/n5b6d91389891

参照したのはこちらですが、このまま実装とは行きません。
https://qiita.com/kiura30/items/a8268253d51db0ebbc31

モデルのデプロイのあと、何もせずにSalesforce側に表示されるのかと思いきや違いました。

まずはアプリケーションを一つインストールする

https://help.salesforce.com/articleView?id=bi_edd_wb_install_native.htm&type=5
こちら参照。
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FOm9nUAD
[Einstein Discovery Writeback] ページが表示されるので、sandbox(気に入ったら本番にもどうぞ)にインストールします。
これによって必要なデータを取りに行くためのクラスがインストールされます。

デプロイ先のオブジェクトに、Modelから返ってくるデータを入れるカスタム項目を追加する

やり方はこちら参照:https://help.salesforce.com/articleView?id=bi_edd_wb_custom_fields_native.htm&type=5

  • 「Discovery Outcome」(検出結果)
  • 「Discovery Explanation」(検出の説明)
  • 「Discovery Prescription」(検出指示)

を追加します

カスタム設定を追加する

https://help.salesforce.com/articleView?id=bi_edd_wb_connect_native.htm&type=5
先程インストールしたアプリケーションのカスタム設定を行います。
ハマったのはこれ
Prediction Definition Id (予測定義 ID) — おすすめをインポートする Einstein Discovery ストーリーの ID 番号。予測定義 ID をコピーするには、Einstein Discovery で [Recommendations (おすすめ)] タブを選択します。おすすめを選択し、[Activation Steps (有効化ステップ)] を選択します。

実際はAnapytics Studioの左カラムメニューの下にモデルマネージャというのがありますので、そこを突くとでてきます。
Einstein_Analytics___Salesforce_-_Enterprise_Edition.jpg

トリガを追加する

https://help.salesforce.com/articleView?id=bi_edd_wb_trigger_native.htm&type=5
コードはそこに書いてあるので基本的にはOKです。
自分の場合は、幾つかModelを作っておいて、選択したものを表示したかったので少し変えました。
イメージとしてはこれです。
LnestID-51874___Salesforce.jpg

予測モデルというカスタム項目を選択リストで作成し、選択リスト項目に先程作ったカスタム設定のNameを設定します。Nameは英字しか使えないので、作成後に編集してラベルを変更すれば良い。
ここを選択して保存することで右側のEinstein Predictionの枠に情報が入るという訳。
トリガはこんな感じ。予測モデル PredictionType__c を取得して、それをモデルに投げてます。

SetDealPrediction.apxt
trigger SetDealPrediction on オブジェクト名__c (after insert, after update) {
   if(System.isFuture()) return;
   if(ed_insights.CheckRecursive.runOnce()) {
   // custom Settings' name
   // 
      for (オブジェクト名__c lid : Trigger.new) {
        String CONFIG_NAME = lid.PredictionType__c;
          system.debug('CONFIG_NAME ' + CONFIG_NAME);
          if(CONFIG_NAME != '' && CONFIG_NAME!=NULL){
	          ed_insights.TriggerHandler.insertUpdateHandle(CONFIG_NAME);          
          }
      }
  }
}

testはseealldata = trueで書いちゃってますが、データが無いと通らないので適宜書いてください

SetDealPredictionTest.apxc
@isTest(seealldata = true)
private class SetDealPredictionTest {
    @isTest static void test_create() {
        // テストデータ取得
        オブジェクト名__c testid = [select id From オブジェクト名 LIMIT 1];
        // テスト開始
        Test.startTest();
        testid.PredictionType__c = 'カスタム設定のName(英字)';
        update testid;
        Test.stopTest();
    }
}

ここまで書いたら恐らくデータの取得ができるので、sandboxの対象レコードを編集→保存するなどしてレスポンスを取得してみましょう。
問題なく動きそうであれば次です。

表示用のlightningコンポーネントを設置する

コンポーネント PSEinsteinDiscoveryCard
https://github.com/thedges/PSEinsteinDiscoveryCard
これが必要ですので、sandboxにデプロイしてください。
そうしたら、Salesforceの対象オブジェクトの編集ページにして、コンポーネントを配置します。
component2.jpg

これでsandboxでは問題なく見えるようになるでしょう。感動ですね。

本番環境にデプロイする

先程のgithubからのデプロイが、いつまでたっても本番環境に対して終わらないので、なんでかな?と思ったのですが、あれ別にテスト無視してくれるツールとかではないんですね。ということで、sandboxからしっかりとデプロイする必要があります。
ただ、テストが入ってないので追加しましょう。

PSEinsteinDiscoveryCardControllerTest.apxc
@isTest(seealldata = true)
private class PSEinsteinDiscoveryCardControllerTest {
    @isTest static void test_create() {
        // テスト用のデータを取得する
        オブジェクト名__c testid = [select id From オブジェクト名 LIMIT 1];
        // テスト開始
        String JsonString = PSEinsteinDiscoveryCardController.getEDInfo('{"recId":"' + testid.id + '","outcomeField":"Discovery_Outcome__c","section1Field":"Discovery_Explanation__c","section2Field":"Discovery_Prescription__c"}');
    }
}

もう一つテストクラスが必要

PSResponseTest.apxc
@isTest(seealldata = true)
private class PSResponseTest {
    @isTest static void test_create() {
        // テスト開始
        PSResponse n = new PSResponse();
    }
}

これでOK

あとはこれらを本番環境に送信します
送信変更セット___Salesforce.jpg

Auraコンポーネント

  • PSEinsteinDiscoveryCard
  • PSEinsteinWrapperCard

静的リソース

  • PSEinsteinImages
  • PSJquery172JS

Apexクラス

  • PSEinsteinDiscoveryCardController
  • PSEinsteinDiscoveryCardControllerTest
  • PSResponse
  • PSResponseTest

こちらデプロイしたら、本番環境の対象オブジェクトにLightningコンポーネントを追加して完成!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?