2023.05.29

Salesforceのフローから外部サービスを呼び出す方法

みなさん、こんにちは。製品営業本部の河合です。

今回は、Salesforce の「フロー」から「外部サービス」を呼び出す方法を紹介します。

Salesforce の「外部サービス」とは

みなさんは「外部サービス」という機能をご存じでしょうか。
Apex でコーディングをすることなく、ポイント & クリックの設定だけで、Salesforceの外のシステムやクラウドサービスの API を実行できる機能です。

使用例

  • 郵便番号検索サービスと連携し、住所の入力を自動化する
  • 基幹システムの在庫情報を参照し、在庫の引き当てを行う
  • Salesforce に新しく登録したユーザーを別システムの社員マスタに連携する
また、設定した外部サービスはフローや Apex から呼び出すことが可能です。
詳細な説明はヘルプをご覧ください。

動作確認用スクリプトの紹介

今回の検証では、DataSpider Cloud というサービスの 、HTTP トリガー機能をAPIで呼び出すことにしましょう。
DataSpider Cloud は当社で取り扱っているクラウド型のデータ連携サービスです。
詳しく知りたい方はこちらをご覧ください。
まずは、HTTPトリガーの設定から着手します。こちらが、実行する DataSpider Cloud の処理(スクリプト)です。
今回は Salesforce からの呼び出し確認を目的とするため、スクリプトは受け取ったパラメータをファイルに書き込むだけのシンプルなものにしています。

事前準備

HTTPトリガーの設定(DataSpider Cloud)

DataSpider Cloud に HTTP トリガーを設定します。
本記事で HTTP トリガーについての解説は省略します。設定方法などはヘルプをご覧ください。
設定が済んだら、HTTPトリガーの呼び出しに必要な情報を確認しておきましょう。

権限セットの作成(Salesforce)

外部サービスの設定に権限セットを使用するため、あらかじめ作成しておきます。
今回はテスト用の権限セットを作成しました。

既に運用中の権限セットを使う場合、本手順はスキップして OK です。

Salesforceで外部サービスの設定をする

ここから外部サービスの設定を進めていきます。
が、事前にいくつかの設定を済ませる必要がありますので、次の流れで作業をします。
  1. 指定ログイン情報の作成
    1. 外部ログイン情報を作成する
    2. 指定ログイン情報を作成する
  2. API定義の作成
  3. 外部サービスの作成

1. 指定ログイン情報の作成

1-1. 外部ログイン情報を作成する
設定画面を開き、左のメニューから [設定 > セキュリティ > 指定ログイン情報] をクリックします。

タブを [外部ログイン情報] に切り替えて、[新規] をクリックします。

次のように入力し、[保存] をクリックします。

項目 入力値 備考
表示ラベル DataSpider Cloud 任意の値でOK
名前 DataSpider_Cloud 任意の値でOK
認証プロトコル カスタム
続いて、権限セットへの紐づけを行います。
[権限セットの対応付け] の右側にある [新規] をクリックします。

先ほど作成した権限セットを選択し、[保存] をクリックします。

これで外部ログイン情報の作成は完了です。
1-2. 指定ログイン情報を作成する
設定画面を開き、左のメニューから [設定 > セキュリティ > 指定ログイン情報] をクリックします。
続いて [新規] をクリックします。

次のように入力し、[保存] をクリックします。

項目 入力値 備考
表示ラベル DSC_HttpTriggerTest 任意の値でOK
名前 DSC_HttpTriggerTest 任意の値でOK
URL https://ss.dataspidercloud.com 外部サービスのURLを入力
外部ログイン情報 * 「外部ログイン情報の作成」で作成したものを選択
上記以外の項目 デフォルト値
以上で指定ログイン情報の作成は完了です。

2. API定義の作成

OpenAPI 形式の API 定義を用意します。今回は↓のサイトで作成しました。
作成したものはサンプルとして添付しておきます。

API定義サンプル

blog01_openapi.json (2.31 KB)
なお、OpenAPI の概要や記述ルールなどは、解説しているサイトがありますので、必要に応じて各自でご確認ください。

3. 外部サービスの作成

いよいよ外部サービスの作成に入ります。

設定画面を開き、左のメニューから [プラットフォームツール > インテグレーション > 外部サービス]
を選択します。
続いて [新しい外部サービス] をクリックします。

[API 仕様から] を選択し、[次へ] をクリックします。

各項目を入力していきます。
[サービススキーマ] は [完全なJSON] を選択し、事前に作成した API 定義をコピペしました。

全ての設定を入力したら、[保存&次へ] をクリックします。

項目 入力値 備考
外部サービス名 DSCHttpTriggerBlog01 任意の値でOK
サービススキーマ 完全な JSON
指定ログイン情報を選択 * 「指定ログイン情報の作成」で作成したものを選択
JSON * 「API 定義の作成」で作成したものをコピペ
登録する操作をチェックし、[次へ] をクリックします。

[完了] をクリックします。

以上で、外部サービスの設定は完了です。

フローからの呼び出し確認

設定した外部サービスをフローから呼び出して動作を確認します。
動作確認用なので、フローの種類は何でも良いです。

リソース作成

HTTP トリガーに渡すパラメータをセットするために次の変数を作成します。
外部サービスを登録すると、ExternalService という名前空間の Apex クラスが自動生成されるようです。

項目 入力値 備考
リソース種別 変数
API 参照名 blog01 任意の値でOK
データ型 Apex 定義
Apex クラス * ExternalService__[外部サービス名]_[リクエストボディのスキーマ名]
上記以外の項目 デフォルト値

変数割り当て

スクリプトに渡すパラメータをセットします。

項目 入力値 備考
表示ラベル setCustomerId 任意の値でOK
API 参照名 setCustomerId 任意の値でOK
変数 blog01 > customerId
「リソース作成」で作成した変数を選択
リクエストのスキーマに依存
演算子 次の文字列と一致する
値 TEST001 任意の値でOK
ここの値が DataSpider Cloud に渡される

アクション作成

外部サービスを呼び出すアクションを作成します。

項目 入力値 備考
アクション postWsTriggerBlog01 外部サービスのアクション名を選択
表示ラベル callDSCHttpTriggerBlog01 任意の値でOK
API 参照名 callDSCHttpTriggerBlog01 任意の値でOK
ak * DataSpider Cloud のフロント画面で確認した値
body blog01 「リソース作成」で作成した変数を選択
cid * DataSpider Cloud のフロント画面で確認した値
sid * DataSpider Cloud のフロント画面で確認した値
こんなフローになりました。

動作確認

今回はフローのデバッグ機能で動作確認をします。

ステータスコード 200 が返ってきているため、問題なさそうです。

DataSpider Cloud側でも実行結果を確認します。
こちらも「正常終了」となっています。

最後にパラメータが届いているか、スクリプトが出力したファイルを確認します。

正しくセットされていることが確認できました。

まとめ

いかがだったでしょうか。
設定手順はやや多めですが、Apex でコーディングをすることなく、DataSpider Cloud の HTTP トリガーを実行できました。

コーディング不要ではありますが、OpenAPI 形式での API 定義の作成など、まだまだ非エンジニアにはハードルが高い部分があるので、今後のアップデートにも期待したいと思います。

本記事ではフローで動作確認をしましたが、外部サービスは Apex からの呼び出しも可能です。
Apex には HTTP リクエスト・レスポンスを扱うためのクラスも用意されています。
Apex の場合は、どの方法で外部 API を呼び出すか使い分けが必要になりそうです。
外部サービスを使う方が、権限セットでのアクセス制御や認証の簡素化といったメリットがありそうですが、このあたりは要件との相談になると思います。

今回は以上となります。最後までお読みいただきありがとうございました。
95 件
     
  • banner
  • banner

関連する記事