（プレリリース）Spring '23 個人的注目の新機能！Flow Builder の Create HTTP Callout (Beta)試してみる

# はじめに

Spring ’23の[リリースノート](https://help.salesforce.com/s/articleView?id=release-notes.salesforce_release_notes.htm&type=5&release=242)が公開されましたね！その中でもWebAPIを実行するアクションが追加されたようなので試してみようと思います。
今まででも、Apexでアクションを作ったりOpenAPIを利用した外部サービスを使ったりすればできたことではありますが
より簡易的に使えるようになることで、多くの人がFlow Builderの中でAPIで取得したデータを活用することができるようになります。

https://help.salesforce.com/s/articleView?id=release-notes.rn_automate_flow_http_callout_beta.htm&type=5&release=242

:::note warn
2022年12月現在Spring '23は、プレリリース組織での提供となってます。
:::

外部サービスについては軽くですが過去に記事を書いています

https://qiita.com/takaHAL/items/3e239477bb0bfba597a1

# プレリリース組織へのサインアップ

sandboxのプレビュー組織がまだ公開されていないので
プレリリース組織を利用します。

https://admin.salesforce.com/blog/2022/admin-spring-23-release-dates-countdown

[こちら](https://www.salesforce.com/form/signup/prerelease-spring23/?_ga=2.2157040.1341412708.1671865956-1546668006.1603647587&_gl=1*lp0si*_ga*MTU0NjY2ODAwNi4xNjAzNjQ3NTg3*_ga_EE9XB9ZV8F*MTY3MTg2NzI4MS4xOC4xLjE2NzE4NjcyOTMuMC4wLjA.)からサインアップ

登録完了後、メール度届きますのでリンクをクリックしてログインできればOKです。

![ホーム _ Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/57360059-96a4-b7de-4f8b-f20e07f4e4b5.png)

# APIの準備

今回は、[Qiita API](https://qiita.com/api/v2/docs)を使わせていただきます。

## アクセストークンの準備

[設定](https://qiita.com/settings/tokens/new)からアクセストークンを発行します。

アクセストークンの説明を入力し
スコープは`read_qiita`にチェックを入れて発行します。

![Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/9102491e-afb1-4057-92a2-e2222a6941de.png)

## APIのテスト

`$ACCESS_TOKEN`は取得したトークン
`$USER_NAME`は自分のuser_idに変更してください

https://qiita.com/api/v2/docs#get-apiv2usersuser_iditems

投稿した記事一覧が取得できればOK

```bash
$ curl -H 'Authorization: Bearer $ACCESS_TOKEN' \
'https://qiita.com/api/v2/users/$USER_NAME/items'
```

## Salesforce 指定ログイン情報の追加

今回の新機能では、APIを実行する際に指定ログイン情報を使います。

### 外部ログイン情報

`設定>指定ログイン情報`にアクセス

`外部ログイン情報`の新規作成をします。

![指定ログイン情報 _ Salesforce (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fece787f-3f22-17ec-3d0d-927d8526691b.png)

|項目|値|
|---|---|
|表示ラベル|Qiita API トークン|
|名前|Qiita_API_Token|
|認証プロトコル|カスタム|



作成した`外部ログイン情報`の`権限セットの対応付け`を新規登録します。

`設定>権限セット`で`外部ログイン情報`にアクセスできる権限セットを作成します。
`ExternalActionQiita`という名前で作成しました。

![権限セット _ Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ec80644b-f63c-98a9-99f9-3d1183b75e87.png)

作成後自分に割り当てをし、

作成した権限セットを`外部ログイン情報`の`権限セットの対応付け`に登録します。

![スクリーンショット 2022-12-24 18.44.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ac898add-ffb4-0837-93fb-9f31fdd51389.png)



作成した`外部ログイン情報`の`カスタムヘッダー`を新規登録します。

![指定ログイン情報 _ Salesforce (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/f524ce79-2f8b-7a89-1556-bbb907565e74.png)


|項目|値|
|---|---|
|名前|Authorization|
|値|Bearer $ACCESS_TOKEN（取得したアクセストークン）|

### 指定ログイン情報

`外部ログイン情報`を作成後 `指定ログイン情報`を新規作成します。

![指定ログイン情報 _ Salesforce (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/1d6bac77-0ca6-5b68-982e-2271bc759f7c.png)

|項目|値|
|---|---|
|表示ラベル|Qiita API v2|
|名前|Qiita_API_v2|
|URL|`https://qiita.com/api/v2`|
|外部ログイン情報|Qiita API トークン（外部ログイン情報で登録したもの）|
|コールアウトオプション|認証ヘッダーを生成にチェック|

これで前準備はOKです。

# フローの作成

## 1. `Create HTTP Callout (Beta)`を追加

フローのアクションから `Create HTTP Callout (Beta)`を選択

![Flow Builder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/b06283be-cae9-f7aa-6517-71ff422523c5.png)

![Flow Builder (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/e5ee3020-f88c-34c2-c903-28ffa476feb4.png)

|項目|値|
|---|---|
|Name|getQiitaItems|
|Name Credential|Qiita API v2 （指定ログイン情報で作成したもの）|

## 2. APIの設定

![Flow Builder (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/9180b7ad-3b51-a013-83df-2f3e5daf3519.png)

|項目|値|
|---|---|
|Label|getQiitaItems|
|Method|GET（BetaではGETのみ）|
|URL Path|`/users/$USER_NAME/items`（$USER_NAMEを自分のuser idに変えてください）|

`Provide Sample Response`を設定します。

![Flow Builder (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/d6c77b77-468c-4f19-c105-39f614013dc5.png)

利用するAPIの[サンプルレスポンス](https://qiita.com/api/v2/docs#get-apiv2usersuser_iditems)を貼り付けます

![Flow Builder (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8141036c-4176-ce42-dd97-858a9f7b500b.png)

アクションを作成完了です。

![Flow Builder (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fa636958-fd5d-8183-4427-22c793ec5cb6.png)

# 実行

## デバッグ

デバッグ実行すると記事が取得できました！

![getQiitaItems - V1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fc804bd5-3927-3c8e-30e0-4f2b54a22dc7.png)

## APIの結果を変数に割り当ててみる

`Create HTTP Callout (Beta)`で作成したアクションは`外部サービス`として登録されています。
![スクリーンショット 2022-12-24 19.11.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/2e39a41a-49d8-4895-3d22-7cb4a891890a.png)


変数のデータ型`Apex 定義`で作成した`外部サービス`の型を利用できるのでApexクラスで選択。

![スクリーンショット 2022-12-24 19.34.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/24e46c6e-87c1-a84f-4e37-56a124e2564a.png)

このように割り当てが可能です。
今回は、複数件記事を取っているので１件に絞るには、APIのリクエストパラメータを追加するか
フローのコレクションを１件に絞るとかすればいいと思います。

![スクリーンショット 2022-12-24 19.37.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/d201c844-b93d-e171-f6e1-92730c45e3ee.png)

# 最後に

Spring '23 の`Create HTTP Callout (Beta)`の機能はどうだったでしょうか？
元々自分は外部サービスを触っていたのですが、いままでだとOpenAPIの定義が必要だったり少し手間なことがありましたが、今回の新機能だとサンプルのレスポンスから作成できるので
以前より登録がかなり楽になりました！Spring '23楽しみですね！
では、また別の機能をご紹介しようと思います。

ほぼ、Salesforceネタを書いている1人アドベントカレンダーもやっておりますので
興味がある方は是非見ていただけると幸いです。

https://qiita.com/advent-calendar/2022/takahal

# 参考

https://help.salesforce.com/s/articleView?id=release-notes.rn_automate_flow_http_callout_beta.htm&type=5&release=242

https://help.salesforce.com/s/articleView?id=sf.named_credentials_define.htm&language=ja&r=https%3A%2F%2Fwww.google.com%2F&type=5