SORACOM Harvest Files にアップロード (ファイル作成およびファイル更新) した JPEG 形式の静止画に写っている「青いシャツを着た人」を GPT-4o で検知して、その人数を Slack に通知する SORACOM Flux アプリ (以下、Flux アプリ) を作成します。
操作を始める前に準備が必要です (クリックして確認してください)
(1) SORACOM アカウント (オペレーター) を作成する
SORACOM アカウント (オペレーター) を作成します。また、支払い方法の登録も必要です。詳しくは、STEP 1: SORACOM アカウント (オペレーター) を作成する を参照してください。
(2) Slack のアカウントを用意する
Slack のアカウントを用意してください。
準備完了ステップ 1: Flux アプリを作成する
ユーザーコンソールにログイン し、Flux アプリを作成するカバレッジタイプを選択します。
たとえば、グローバルカバレッジの Harvest Files に静止画をアップロードしたときに Flux アプリが実行されるようにする場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
をクリックします。
以下の項目を設定します。
項目 説明 Flux アプリの名前を入力します。 Flux アプリの概要を入力します。 をクリックします。
Flux アプリが作成され、SORACOM Flux Studio の
タブが表示されます。
ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する
SORACOM Flux Studio の
タブで、 をクリックします。「新しいチャネルを作成」画面が表示されます。
→ の順にクリックします。
この Flux アプリでは、Harvest Files にアップロード (ファイル作成または更新) したときに、メッセージをチャネルに送信するように設定します。
SORACOM Harvest Files イベントソースから、チャネルに送信されるメッセージについて詳しくは、SORACOM Harvest Files イベントソース を参照してください。
以下の項目を設定します。
項目 説明 チャネルの名前を入力します。 チャネルの概要を入力します。 Harvest Files でどのような変化が起きたときに、このチャネルにメッセージを送信するか、という条件を設定します。
項目 説明 この条件の有効/無効を設定します。 Harvest Files のファイルパスを入力します。ここで指定したパスと前方一致したファイルがイベントの対象です。 ファイルの変化の種類を選択します。ここでは、アップロード (ファイル作成または更新) を対象にするために、
と にチェックを入れます。- : ファイルが新規にアップロードされた。
- : 既存のファイルと同名のファイルがアップロードされた。
- : ファイルが削除された。
をクリックします。
イベントソースに連結したチャネルが作成され、チャネルの詳細画面が表示されます。
Esc キーを押すか、
(閉じる) をクリックします。SORACOM Flux Studio の
タブに戻ります。
ステップ 3: AI アクションとアウトプットを送信するチャネルを作成する
この Flux アプリでは、イベント (Harvest Files に JPEG 形式のファイルをアップロードしたこと) にあわせてリクエスト (青いシャツを着た人の人数を質問する) を生成 AI に送信するように設定します。具体的には、AI アクションと、AI アクションのアウトプットを送信するチャネル (例: AI Output チャネル) を作成します。
ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する で作成したチャネルをクリックします。
→ の順にクリックします。
「新しいアクションを作成」画面が表示されます。
→ の順にクリックします。
「新しい AI アクションを作成する」画面が表示されます。
以下の項目を設定します。
項目 説明 AI アクションの名前を入力します。 AI アクションの概要を入力します。 AI アクションを有効化する場合は「有効」にします。 AI アクションの実行条件を設定します。ここでは、Harvest Files に JPEG 形式の静止画 (
contentType
がimage/jpeg
) をアップロードしたことを実行条件にするために、 にpayload.contentType == "image/jpeg"
を入力します。SORACOM Harvest Files イベントソースからチャネルに送信されるデータは Harvest Files イベントソース を参照してください。
アクションに関連するチャネルからのメッセージを扱う場合、
payload.
のように指定します。イベントやメッセージの値を使ってアクションを実行する条件を指定する場合は、 の入力欄の下に表示される をクリックして説明を確認してください。
続けて、以下の項目を設定します。
項目 説明 AI アクションで利用する AI モデルや、AI モデルに送信するプロンプトなどを設定します。
: 「Azure OpenAI (GPT-4o)」を選択します。
: 以下の内容を入力します。
添付の画像で、全体の人数と青いシャツを着た人の人数を教えて下さい。何人映っていますか?必ずJsonで、 {"people":1, "people_with_blue_shirts": 1} のようなフォーマットで返してください。
: チェックを入れます。
: チェックを入れて、入力欄に${payload.presignedUrls.get}
を入力します。
AI アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。
- : 「有効」にします。
- : を選択して、 に「AI Output」を入力します。
をクリックします。
AI アクションが作成され、チャネルの詳細画面の
タブに戻ります。Esc キーを押すか、
(閉じる) をクリックします。SORACOM Flux Studio の
タブに戻ります。
ステップ 4: Slack 通知アクションを作成する
この Flux アプリでは、生成 AI のレスポンスに応じて、Slack にメッセージを送信するように設定します。具体的には、Slack 通知アクションを作成します。
ステップ 3: AI アクションとアウトプットを送信するチャネルを作成する で作成されたチャネル (例: AI Output) をクリックします。
チャネルの詳細画面が表示されます。
ステップ 3 で作成されたチャネルのイベントソースは変更できません。
チャネルの詳細画面の
タブに表示されたエントリポイントに、JSON 形式のデータを POST すると、任意のタイミングで Slack 通知アクションを実行できます。→ の順にクリックします。
→ の順にクリックします。
「新しいアクションを作成: Slack 通知」画面が表示されます。
以下の項目を設定します。
項目 説明 Slack 通知アクションの名前を入力します。 Slack 通知アクションの概要を入力します。 Slack 通知アクションを有効化する場合は「有効」にします。 Slack 通知アクションの実行条件を設定します。ここでは、
people
が 0 より大きい値であることを実行条件にするために、 にpayload.output.people > 0
を入力します。- ステップ 3 で作成した AI アクションのアウトプットを送信するチャネルに送信されるデータは、AI アクション を参照してください。
- アクションに関連するチャネルからのメッセージを扱う場合、
payload.
のように指定します。イベントやメッセージの値を使ってアクションを実行する条件を指定する場合は、 の入力欄の下に表示される をクリックして説明を確認してください。
続けて、以下の項目を設定します。
項目 説明 Slack 通知アクションで送信するメッセージや、Incoming Webhook インテグレーションの Webhook URL を設定します。
- : 通知先の Slack チャンネルに紐づいた Webhook URL を入力します。Webhook URL を発行する手順について詳しくは、
: 以下の内容を入力します。
人が ${payload.output.people} 人います。そのうち、青いシャツの人が ${payload.output.people_with_blue_shirts} 人います!! <${event.payload.presignedUrls.get}|画像>
- Slack 通知アクションが追加されたチャネルのデータ (この例では、AI アクションの実行結果) を扱う場合は、
${payload.output.people}
のように指定します。 - Flux アプリが起動するトリガーのイベントソースのデータ (この例では、Harvest Files へアップロードした JPEG 形式の静止画) を扱う場合は、
event.
を付与して、${event.payload.presignedUrls.get}
のように指定します。
Slack 通知アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。
- : 「無効」にします。
をクリックします。
Slack 通知アクションが作成され、チャネルの詳細画面の
タブに戻ります。
(動作確認) JPEG 形式の静止画を Harvest Files にアップロードして Slack にメッセージが届くことを確認する
「青いシャツを着た人」が映っている JPEG 形式の静止画を Harvest Files にアップロードして動作を確認しましょう。
JPEG 形式の静止画を Harvest Files にアップロードする
ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する で指定した条件を満たすように、Harvest Files にファイルをアップロードします。Harvest Files にファイルをアップロードする手順については、SORACOM Harvest Files にファイルをアップロードする を参照してください。
SORACOM Relay も利用できます
メディア転送サービス SORACOM Relay を使用すると SORACOM に接続した RTSP 対応ネットワークカメラの映像から動体検知した静止画を SORACOM Harvest Files に保存できます。
Slack 通知が届いていることを確認する
に入力した Webhook URL に紐づくチャンネルに、メッセージが届いていることを確認してください。
Harvest Files にアップロードした JPEG 形式の静止画に、人が映っていた場合にだけメッセージが届きます。
それ以外の場合は、メッセージが届かないことを確認してください。たとえば、以下のような場合はメッセージは届きません。
- Harvest Files に PNG 形式の静止画をアップロードした。
- Harvest Files にアップロードした JPEG 形式の静止画に、人が映っていない。
Flux アプリの実行履歴を確認する
SORACOM Flux Studio の
タブでも、実行履歴を確認できます。ユーザーコンソールにログイン し、Flux アプリを作成したカバレッジタイプを選択します。
たとえば、グローバルカバレッジに Flux アプリを作成した場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
作成した Flux アプリをクリックします。
をクリックします。
チャネルごとに、実行履歴 (ログ) を参照してください。
、 、そのチャネルから実行されたアクションの 、 が表示されます。詳しくは、
SAM ユーザーの権限について
SORACOM では、アクセス管理 (SORACOM Access Management: SAM) を利用して、権限を制限したアカウント (SAM ユーザー) を作成できます。
SAM ユーザーが、このページの説明に従って Flux アプリを体験する際に必要な SAM パーミッション権限の例は以下のとおりです。
{
"statements": [
{
"api": "Flux:*",
"effect": "allow"
},
{
"effect": "allow",
"api": "FileEntry:listFiles",
"condition": "pathVariable('path') matches 'flux'"
},
{
"effect": "allow",
"api": "FileEntry:getFile",
"condition": "pathVariable('path') matches 'flux/.'"
},
{
"effect": "allow",
"api": "FileEntry:putFile",
"condition": "pathVariable('path') matches 'flux/.*'"
}
]
}
この例は、わかりやすさを優先した設定です。そのため権限をさらに減らしても、このページの操作が必ずしもできなくなるとは限りません。お客様の要件にあわせて権限を設定してください。