日々ろぐ

人に優しく٩( 'ω' )و

Azure Functions で作成した API を Power Automate のカスタムコネクタから呼び出す

タイトルの通り。

育休も相まって結構な時間が経ってしまいましたが、仕事で使いそうだったので軽くサンプルを作ってみるなどしました。
(ちゃんと仕事してるよアピール)

各サービスについては特に触れません。

やることとしては、Power Automate から API を呼び出し、その結果を JSON で取得します。

API作り

今回は Azure Functions で作ります。
前準備としては、VSCode拡張機能と、ローカル実行用の Core Tools を追加しておきます。

marketplace.visualstudio.com

docs.microsoft.com

今回のNodeのバージョンは v10.15.3 です。

ローカルプロジェクトの作成

VScode の左ペインで Azure アイコンを選択し、フォルダアイコン (Create New Project...) から新しいプロジェクトを作成します。
アイコンをクリックするとプロンプトが出てくるので、必要な情報を入力していきます。

Select the folder that will contain your function project:作業フォルダを選択
Select a language for your function project :TypeScript
Select a template for your project's first function:HTTP trigger
Provide a function name:HttpExample
承認レベル: Anonymous(今回は認証を使用しない)

入力を終えると API のひな型が作成されます。
ファイルエクスプローラから index.ts を確認して、const httpTrigger の内容を以下のように変更します。

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    const name = (req.query.name || (req.body && req.body.name));
    const res = {
        myOutput: {
            no: 1001,
            name: name,
            description: 'Hello world',
            isActive: true
            }
    }
    context.res = {
        body: JSON.stringify(res)
    };
};

デバッグ

[F5]キーを押してデバック実行します。
実行するとターミナルに URL が出てくるので、そのURLに対してリクエストを投げて確認します。

確認には Postman が使えますが、localhost に対するリクエストになるので、 Postman Agent または Postman App を入れておくとよいです。

Azureへデプロイ

VScode の左ペインで Azure アイコンを選択し、[Sign in to Azure...] から Azure へサインインします。
その後、雲のアイコン (Deploy to function app...) を選択して必要な情報を入力します。

Select subscription:デプロイ先にするサブスクリプションを選択
Select function app in Azure:Create new Function App
Enter a globally unique name for the function app:グローバルに一意な名前を入力します。
Select a runtime:Node 10.
Select a location for new resources:リージョンを選択(おそらく大体はJapanのどちらか)

デプロイが完了したら、作成されたリソースをAzure Portal で確認します。

カスタムコネクタ作り

作成した API を呼び出すカスタムコネクタを作成します。

Powe Automate のホームから [データ] - [カスタムコネクタ] の順に画面を開き、右上の [カスタムコネクタの新規作成] - [一から作成] を選択します。
ダイアログが出てくるので、カスタムコネクタの名前を入力して進めます。

1.全般

アイコン、アイコンの背景色、コネクタの説明などを必要に応じて入力します。
スキーマHTTPS のままにして、ホストとベース URL に先ほど作成した API の情報を入力します。

  • ホスト:API のホスト
  • ベースURL:API の URL からドメイン以前を除いた文字列

f:id:massyuu-d:20210826142307j:plain

2.セキュリティ

認証情報がある場合はここで指定します。(今回はスキップ)

3.定義

Request 、 Response を設定します。
f:id:massyuu-d:20210826142847j:plain

一つのコネクタで複数のアクションを行いたい場合、ここでアクションを追加することができます。
(画像では1アクションのみ)

Request の設定は [要求] の項目の [サンプルからのインポート] で行います。
今回は Get Request を設定します。 Get のクエリは、URL の末尾に追加すると動的にクエリの項目に追加されます。
ここでは

https://XXX.azurewebsites.net/api/HttpTriggerSample/?name=

の形で name クエリを追加します。
複数ある場合は

?name=&query2=&query3...

のように追加する必要があります。

また、ヘッダー情報もここで追加します。

クエリやヘッダー情報に対しては、各項目の編集画面から既定値を設定するなどができます。

Response には最初からDefaultがあるので、今回はそちらを使います。
Response 本文は、API の呼び出し結果をそのまま使うので特に指定しません。

4.コード(プレビュー)

この項目はノータッチで進めます。

Swaggerエディター

カスタムコネクタを作るにあたっては、Swagger エディターを利用することもできます。
慣れているならエディタを ON にして、Swagger の形式で書く方がかなりやりやすいと思います。
f:id:massyuu-d:20210826144704j:plain

5.テスト

ここまで作成したカスタムコネクタの動作確認を行うことができます。
コネクタに接続し、必要なパラメータを入力してテスト操作を行います。

下のイメージのように、応答内容を確認することができます。

Power Automate からの呼び出し

作成したカスタムコネクタを、Power Automate から呼び出して確認します。

カスタムの項目から先ほどのカスタムコネクタを選択し、アクションを指定します。
f:id:massyuu-d:20210826150229j:plain

f:id:massyuu-d:20210826150231j:plain

必要な情報を入力。
f:id:massyuu-d:20210826150337j:plain

次のステップで JSON を解析し、中身を別の変数に入れて使えるかを確認します。
f:id:massyuu-d:20210826150534j:plain

ここで JSONスキーマを設定する必要がありますが、API の呼び出し結果をそのまま使えばスキーマの生成もスムーズに行うことができます。

あとは Power Automate をテスト実行してみて、実行結果を確認してみます。

f:id:massyuu-d:20210826150918j:plain

API 呼び出し結果の JSON から name の項目が取得できることが確認できました。

そんな感じで今日はここまで。