SORACOMのDownlink APIをSORACOM Fluxから呼ぶ

# はじめに
[前回の記事](https://qiita.com/ozk009/items/2c48eb7eec3cf5aff121)では、Windows PCで動くNode-REDで[SORACOMのDownlink API](https://soracom.com/ja/news/20250324-downlink-api-supports-device-control)を受信する手順を説明しました。
今回の記事では、このDownlink APIを[SORACOM Flux](https://soracom.jp/services/flux/)から呼ぶ手順を紹介します。
「なぜAPIをSORACOM Fluxから呼ぶのか？」は面倒なAPIキー＆トークンのやり取りを省いてAPIを呼べるからで、他のシステムと連携する場合などはこちらの方が便利だからです。

# SORACOM Fluxから呼ぶ
SORACOM Fluxはローコード IoT アプリケーションビルダーでセンサーのデータや、カメラ画像などを生成AIで処理できることがピックアップされがちですが、そのほかに手軽にSORACOM APIを呼ぶという便利な使い方もあります。

## Fluxアプリの作成
以下の手順でFluxアプリを作成する
1. SORACOM ユーザーコンソールの画面左上のメニューをクリックし、「SORACOM Flux」の「Fluxアプリ」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/d7de4eb6-259b-4469-8888-efe5ef015022.png)
1. 「新しいFlux アプリを作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/2bf8760f-1c7a-472b-aa21-7fb7a0c585eb.png)
1. 名前に「Downlink API」と入力して「作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/15294c01-4471-4bab-96f8-6be8282caa2d.png)
1. 「チャネルを作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/cc50b0b2-7866-477a-aa8d-403f4b4cd71a.png)
1. 「APIマニュアル実行」を選択し、「次へ」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/fd336ad9-c7bf-4d83-a015-76eccf1bae95.png)
1. ひとまず名前はそのままで「チャネルを作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/5bb2e968-0c77-4045-9fe8-663ec8aa595a.png)
1. 「アクション」を選択し、「アクションを追加」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/8991b1b8-bd92-4186-95f9-f719cfda09b6.png)
1. 「SORACOM API」を選択し、「OK」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/95c0c46d-475a-4a12-ba34-e0ae1e3c1126.png)
1. 検索欄に「senddownlinkhttp」と入れると候補が出てくるので、「sendDownlinkHttp」を選択して下にスクロールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/3deceb97-ca23-4879-9000-e5fee77a43e5.png)
1. URLの`{sim_id}`を[こちらの方法](https://qiita.com/ozk009/items/7379e6dc2f3d96e3ea8d)で確認できる**SIM ID**に書き換え、HTTPボディに下のJSON文字列を入れて、下にスクロールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/0d549bd0-618c-4bd4-9576-e0b2c6aa812f.png)

    ```json
    {
      "method": "POST",
      "path": "/api",
      "port": 1880,
      "skipVerify": true,
      "ssl": false
    }
    ```
1. 注意事項を読み、「注意点を理解して利用する」をチェックして、「作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/c05c581d-96af-476e-8dee-07a3a5d21249.png)

以上でFluxアプリの作成が完了です。

## Fluxアプリのテスト
作成したFluxアプリの動作確認をします。
1. APIマニュアル実行チャネルをクリックし、「テスト実行」を選択して、「実行」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/adb416db-e4c0-40e8-90fa-c7f9947dc728.png)
1. 少し待って画面を下にスクロールし、出力のbodyに「API called」と表示されれば成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/5862b422-8a8d-4ac3-a9fa-29e91531860f.png)

:::note warn
テストに失敗する場合、実行前に（[前回の記事](https://qiita.com/ozk009/items/2c48eb7eec3cf5aff121)で作成した）Node-REDのデータ送信を実行（injectノードの左のボタンをクリック）した後にAPIを実行すると成功することがあります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/f1a5bd18-8c2a-4bdb-bb13-dbeda9709594.png)
:::

# Webhookで呼べるようにする
SORACOM FluxはIncoming Webhookでアプリを呼ぶことができます。

https://users.soracom.io/ja-jp/docs/flux/incoming-webhook/

この機能を使うと、別システムとの連携がより簡単になります。
ここではWebhookで呼び出すための手順と確認方法を説明します。

## 準備
Downlink APIが実行されたことをわかりやすくするよう、[前回](https://qiita.com/ozk009/items/2c48eb7eec3cf5aff121)作成したNode-REDのフローに赤枠で囲ったdebug ノードを追加し、デプロイしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/360411c4-cb4c-4e04-a7fa-c6c7096bf3eb.png)

## Incoming Webhook有効化
1. FluxアプリでAPIマニュアル実行チャネルをクリックし、「Incoming Webhook を作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/8fdf1948-cdac-423f-8b53-fb29c678ca40.png)
1. 名前は一旦そのままで「作成する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/e522446e-23a2-453f-870a-338e08728818.png)
1. 「Webhook URLを表示する」をクリックして、表示されたURLがWebhookのURLとなる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/de3fbfbe-3ec7-41c2-b078-721c88f797c3.png)

続いてテストをするので、WebhookのURLをメモ（コピー）しておいてください。

## Incoming Webhookのテスト
1. Windows PCのコマンドプロンプトから以下のcurlコマンドを実行する

    ```
    curl -X POST https://api.soracom.io/v1/flux/incoming_webhooks/…（Incoming WebhookのURL）
    ```
1. Node-REDのデバッグウィンドウに「API called」と表示されたら成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/352ce4fc-b0a9-4e6c-85ea-ccb0efb6501a.png)

:::note warn
テストに失敗する場合、前述の注記同様、Node-REDのデータ送信を実行した後にAPIを実行すると成功することがあります
:::

# おわりに
いかがでしたでしょうか。
次回はDownlink APIでエッジ側（Windows PCのNode-REDフロー）に値を渡す方法を紹介します。
どなたかの参考になると幸いです。