Integration Procedure を使用して外部データを抽出する
学習の目的
この単元を完了すると、次のことができるようになります。
- FlexCard と OmniScript に使用できる外部データソースを挙げる。
- 外部データを抽出する Integration Procedure 内でのデータの流れをまとめる。
- API キーを使用して外部データを取得する URL を作成する。
- 外部データを Integration Procedure に追加する。
はじめに
Salesforce 組織外からのデータはすべて外部データです。Salesforce にはないデータが必要な場合、外部データソースを使用します。FlexCard や OmniScript に外部データを表示することは、ほとんどの実装で一般的なニーズです。外部データソースには次のようなものがあります。
- 従来のデータソース
- オンプレミスのデータソース
- API インテグレーション
- その他のサードパーティのデータとアプリケーション
気象 API を使用する方法は、練習で Web API を介してデータを取得するのに適しています。多くの業種にとって悪天候は重要な要素であるため、気象については豊富な使用事例があります。たとえば、天候による住宅への被害 (保険) や悪天候によるサービスの停止 (エネルギー) などです。
この FlexCard には取引先の場所 (請求書の郵便番号に基づく) の現在の天気と天気予報が表示されます。現在の気温と場所は親 FlexCard に表示され、フライアウトモーダルに翌 5 日間の予報が表示されます。
この OmniScript には、取引先の場所の現在の天気が表示され、危険な気象条件が発生した場合にはアラートが表示されます。
実は、この FlexCard と OmniScript には同じ Integration Procedure が使用されています。さらに、同じ Integration Procedure によって FlexCard と OmniScript 用の内部データと外部データが取得されています。
Integration Procedure がデータ取得のベストプラクティスである理由の 1 つは、複数のソースからデータを抽出できることです。たとえば、1 つの Integration Procedure 要素で Salesforce 組織からデータを抽出し、別の Integration Procedure 要素で外部ソースからデータを抽出することができます。
外部ソースからデータを抽出する場合は、API キーを使用してデータを取得し、Integration Procedure をコールしたツール (FlexCard または OmniScript) に返す前にデータを変換します。天気の例では、取引先の郵便番号を取得し、それを Weatherbit.io に送信して現在の天気と予報のデータの両方を要求し、そのデータに対して編集とトリミングを行います。
外部データ抽出のデータフロー
この仕組みを確認しましょう。データが FlexCard または OmniScript から Integration Procedure へと流れ、その後 Integration Procedure から FlexCard または OmniScript へと戻る様子を確認しましょう。
FlexCard または OmniScript は AccountId を Integration Procedure に送信します (1)。
Integration Procedure は AccountId を DataRaptor Extract Action 要素に渡します。この要素は DataRaptor Extract を使用して Salesforce から取引先の郵便番号を抽出し、Integration Procedure に返します (2)。
Integration Procedure は Set Values 要素を使用して API キーを保持します。Set Values 要素は API キーを 2 つの Hypertext Transfer Protocol (HTTP) Action 要素と共有します。DataRaptor Extract Action 要素は取引先の郵便番号を 2 つの HTTP Action 要素と共有します (3)。
両方の HTTP Action 要素は取引先の郵便番号 (取引先の場所) と API キーを Weatherbit.io サイトに送信します。一方の Action は現在の天気の JavaScript Object Notation (JSON) を受信し、もう一方は 5 日間の天気予報データの JSON を受信します (4)。
現在の天気と天気予報の両方の JSON は DataRaptor Transform に送信され (5)、トリミングとデータの変換が行われて、選択されたデータのみが返されます。
選択された JSON は Response Action 要素に送信され (6)、そこからさらに Integration Procedure をコールした FlexCard または OmniScript に返されます (7)。
うまくできていますね。外部データを Weatherbit.io の Web サイトから組織に取得するには、API キーが必要で、さらに特別な URL を作成する必要があります。
API キーを使用して外部データを取得する URL を作成する
天気データを取得する URL を作成する前に、API キーを取得する必要があります。Weatherbit.io の Web サイトで無料アカウントを作成します。サインインすると、[Account (アカウント)] ダッシュボードの [Master API Key (マスター API キー)] に API キーが表示されます。どこかに保存し、URL を作成するとき (次に実行します) に使用します。
[Weather API Documentation (Weather API ドキュメント)] ページで [Current Weather API (現在の天気 API)] 見出しを見つけて、その下の [Swagger UI] をクリックします。
[Swagger UI Documentation (Swagger UI ドキュメント)] ページには、現在の天気データを取得するさまざまな方法が表示されています。
[Returns a current observation by postal code (郵便番号の場所の現在の観測を返す)] リンク (1) を選択し、API キーなどの必須パラメーター (2) を入力します。
パラメーターの入力が完了したら、[Try it out! (試してみる)] ボタン (1) をクリックすると [Request URL (要求 URL)] (2) が生成されます。この URL を現在の天気の HTTP Action 要素で使用します。
[Weather API Documentation (Weather API ドキュメント)] ページに戻ります。[Forecast API (16 day/daily) (予報 API (16 日/毎日))] 見出しを見つけて、その下の [Swagger UI] をクリックします。[Returns a daily forecast - Given a Postal Code (郵便番号の場所の毎日の予報を返す)] リンクを選択し、API キーなどの必須パラメーターを入力します。
パラメーターの入力が完了したら、[Try it out! (試してみる)] ボタンをクリックすると予報データの [Request URL (要求 URL)] が生成されます。この URL を天気予報の HTTP Action 要素で使用します。
URL の作成が完了したため、Integration Procedure を作成する準備ができました。
外部データを抽出する Integration Procedure の設定
データを抽出する Integration Procedure を設定するときには、この強力な OmniStudio データツールの他の機能も活用します。
- Set Values 要素を使用して API キーを保存する。
- HTTP Action 要素のプロパティを設定して JSON 応答をトリミングする。
API キーは Set Values 要素に保存することをお勧めします。こうすることで、わかりやすくなり、クライアントへのコールが減り、Integration Procedure が保守しやすくなります。API キーを保存する Set Values 要素を追加する方法は次のとおりです。
Integration Procedure の [STRUCTURE (構造)] パネルに Set Values 要素 (1) を追加します。次に、[Element Value Map (要素値マップ)] セクションを使用して API キーを保存します (2)。
ここにキーを保存したら、HTTP Action 要素の実際の API キーを %APIKey% ([Element Value Map (要素値マップ)] での要素の名前) に置き換えます。
API キーが変更された場合には、Set Values 要素を編集するだけですみます。そのため、Integration Procedure が保守しやすくなります。
より簡単にすると言えば、Weatherbit.io から送信される JSON 応答全体を渡す必要がないということをご存知でしたか? そうです。HTTP Action 要素のプロパティを使用することで、データ応答をトリミングできるのです。
まず、HTTP Action 要素 (1) を [STRUCTURE (構造)] パネルにドラッグします。次に、[HTTP Path (HTTP パス)] 項目 (2) に外部データを取得するために作成した要求 URL を追加し、[HTTP Method (HTTP メソッド)] 項目 (3) に「GET」
と入力します。
HTTP パスと HTTP メソッドを定義した後に、[Response JSON Path (応答 JSON パス)] 項目を使用して JSON 応答をトリミングし、data
ノードのみを共有するようにします。これをお勧めする理由は、応答 JSON を絞り込み、data
ノード内の情報のみを [STRUCTURE (構造)] パネル内の次の要素に送信できるためです。
これで、HTTP Action 要素が受け取るデータが簡略化されました。次は、この外部データをトリミングと変換によって必要な形式にして、FlexCard または OmniScript に送信する方法について学習します。