Spring’23でベータ版リリースされたフローのHTTPコールアウト(HTTP Callout)を試してみます。HTTPコールを使用するには今まではApexしかありませんでしたが、今後はフローにてコーディング無しに気軽に使えます。
Spring’23時点でGet方式のみベータ版リリース、Summer’23ではGet方式が正式リリースとPost方式がベータ版リリースになります。その次のWinter’24ではPost方式も正式リリースになるかもしれませんね。
今回はSpring’23環境でGet方式を試してみます。
Post形式は別記事で紹介しています。
HTTPコールアウトとは
HTTPコールアウトとは簡単に言うと、WEB経由でSalesforce外部のサービスを呼び出すことで必要な情報を取得することが出来る仕組みです。正確には少し違う部分はありますが、Salesforceでの使用例としては下記のようなイメージです。
【例1】Salesforceで登録している郵便番号情報をGoogleMap系の外部サービスに投げ込むと、該当する住所情報を投げ返してくれる
【例2】Salesforceで登録している取引先の住所情報をYahoo天気系の外部サービスに投げ込むと、該当する地点の住所情報を投げ返してくれる
世の中には多くのWEB系外部サービスが公開されており、有料/無料、商用利用OK/NGなど様々です。今まではApexでコーディングしないと使用できませんでしたがフローで使用できるようになったので上記例1、例2とは別ですが簡単な無料外部サービスで試してみます。
使用する外部サービスと今回の完成形
上記で見た例ではSalesforceの一定情報(郵便番号など)を外部サービスに投げ、そこに該当するデータを投げ返してくれるものでした。
今回はSalesforceから特に一定情報は投げずにシンプルなパターンを試します。
犬の画像をランダムで表示してくれる、無料公開されているものを使用します。
・外部サービス:RandomDog
ChromeなどのWEBブラウザで「https://random.dog/woof.json」を入力すると下記のように毎回異なる犬画像URLが生成されます。ブラウザで「https://random.dog/woof.json」を入力する度に、表示されるURLはランダムで違うものになります。この記事を書いているときは下記が表示されました。
ここで表示された「https://random.dog/6edc72e5-f31f-4f9a-8a80-7b53d10479b8.jpg」をWEBブラウザに入力すると下記の画像が表示されます。(※RandomDogより拝借)
このように、このサイトでは「https://random.dog/woof.json」という固定URLからランダムに毎回異なる犬画像URLを取得できます。
ここからはこのRandomDogサイトをフローで呼び出しランダムな犬画像URLを取得、Salesforceで画像表示するという流れを試してみます。
指定ログイン情報の作成
まずは今回作成する外部ログイン情報を使用できるユーザを定義するために、事前に[ユーザの外部ログイン情報]という標準オブジェクトへのアクセス権限セットを作成し、「RandomDogs」を使用させたいユーザへ割り当てます。
今回は「RandomDogs権限セット」という名前の権限セットを作成しました。
次に[指定ログイン情報]-[外部ログイン情報]を作成します。今回は「RandomDogs」という名前にします。
作成した外部ログイン情報を使用できるユーザを権限セットで定義します。先程作成しておいた「RandomDogs権限セット」を[権限セットの対応付け]で指定します。
これでまずは[外部ログイン情報]の作成は完了です。
↓
次に[指定ログイン情報]-[指定ログイン情報]を作成します。今回は「RandomDog指定ログイン情報」という名前にします。
URLと外部ログイン情報は先ほどそれぞれ確認した「https://random.dog/woof.json」、「RandomDogs」を指定します。
これで[指定ログイン情報]の作成も完了です。
フローでHTTPコールアウト作成
それでは[指定ログイン情報]を使いHTTPコールアウトをフローで動かしてみます。
画面フローの新規作成画面からアクション要素にて[HTTPコールアウトを作成]を進めます。今回は「RandomDogCallout」という名前で作成していきます。
Get方式を選択します。今回は呼び出すURLにクエリパラメータが必要がありませんが、必要に応じてここで設定しておけば動的にURLに付加することができます。最初に例1で紹介した、Salesforceで登録してある取引先の郵便番号などがここでいうクエリパラメータです。
次に[サンプル応答を指定]からHTTPコールされた後に返ってくるJSONを定義します。外部サービスに情報を投げると、該当する情報を投げ返してくれる。その情報はどういう形式かを事前にフローに教えてあげておくイメージです。
ChromeなどのWEBブラウザからURL「https://random.dog/woof.json」を実行したい際に表示される値を[サンプルJSON応答]に入力し確認ボタンを押すと、その構造をSalesforceが解析し[データ構造]に表示します。
今回は最終的にHTTPコールで出力されるパラメータがfileSizeBytesとurlの2つであることが分かります。完了ボタンでサンプル応答設定を完了し、「新規 HTTP コールアウト」画面に戻ってから完了を押しアクション要素の作成完了です。
新規アクション画面に戻ってくるので、ラベル名とAPI参照名を入力してアクション要素を作成します。
最後にアクション要素で取得した画像URLを画面要素で表示して完成です。
全体像はこのようになりました。
挙動確認
フローをデバッグすると読み込むたびに、毎回異なる犬画像URLを表示できるようになっています。
URLを「画像を表示」文字にリンク化しているため、押すと犬画像が表示されました。(※RandomDogより拝借)
まとめ
外部サービスを使ってコーディング無しで情報を取得することができました。今回は少し遊びの方向で作成してみましたが、GoogleMapのAPIや通貨レートAPIなどを使用すれば業務で役立つ仕組みを作れそうです。
次回はSummer’23でベータ版リリースされたPost方式を試してみたいと思います。
(2023年8月追記)Post形式を試してみました。