Slack ファイルアップロードアクションは、指定された URL からファイルを取得し、指定された Slack チャンネルにアップロードします。ソラカメ画像取得アクションで取得した静止画など、ほかのアクションが出力したファイルを Slack で共有できます。
Slack 通知アクション でファイルの URL をメッセージとして送信した場合、有効期限のある URL (例: ソラカメ画像取得アクションが出力する imageUrl) は、有効期限が過ぎると Slack で表示できなくなります。Slack ファイルアップロードアクションでは、ファイルそのものが Slack に保存されるため、元の URL の有効期限が過ぎたあとも Slack で確認できます。

Standard プラン、Enterprise プランで利用できます
プランについて詳しくは、SORACOM Flux のプラン を参照してください。
チャネルにアクションを追加する手順については、チャネルにアクションを追加する (処理を分岐する) を参照してください。
Slack 側の準備
Slack ファイルアップロードアクションは、Slack App の Bot トークンを使用してファイルをアップロードします。あらかじめ、Slack で以下の準備をしてください。
Slack App を作成します。
作成した Slack App の Bot Token Scopes に
files:writeを追加します。Slack App をワークスペースにインストールします。
インストールすると、Bot トークン (
xoxb-で始まる文字列) が発行されます。Bot トークンについて詳しくは、Slack の Token types (英語) を参照してください。ファイルをアップロードするチャンネルに、作成した Slack App を招待します。
ファイルをアップロードするチャンネルのチャンネル ID (例:
C0123456789) を確認します。発行された Bot トークンを、認証情報ストアに API トークン認証情報 として登録します。
に Bot トークンを入力します。認証情報を登録する操作について詳しくは、認証情報を登録する を参照してください。
Slack ファイルアップロードアクションの設定
ここでは、Slack ファイルアップロードアクションの CONFIG について説明します。そのほかの項目については、アクションリファレンスの 「新しいアクションを作成」画面 を参照してください。
CONFIG
アップロードするファイルとアップロード先を設定します。

| 項目 | 説明 |
|---|---|
| (必須) Slack App の Bot トークンを登録した API トークン認証情報を選択します。詳しくは、Slack 側の準備 を参照してください。 | |
(必須) ファイルをアップロードする Slack チャンネルのチャンネル ID (例:
| |
アップロードするファイルの URL と、Slack に表示するファイルのタイトルを入力します。行を追加すると、最大 10 件のファイルをアップロードできます。
| |
ファイルと一緒に送信するメッセージを入力します。
| |
| → | スレッドに返信としてアップロードする場合に、親メッセージのタイムスタンプ (
|
アップロードできるファイル
- 1 回の実行でアップロードできるファイルは 10 件までです。
- 1 ファイルあたりの大きさは 50 MiB まで、1 回の実行でアップロードできるファイルの合計は 100 MiB までです。
- ファイルの取得とアップロードには、それぞれ 1 ファイルあたり 60 秒の制限時間があります。1 回の実行全体の制限時間は約 4 分 40 秒です。
- SORACOM Flux は、認証情報を付けずにファイルの URL にアクセスします。インターネットから認証なしで取得できる URL (公開 URL や署名付き URL) を指定してください。プライベート IP アドレスなどの内部向けの宛先は指定できません。
上限を超えた場合や、ファイルを取得できなかった場合は、エラーになります。
有効期限のある URL (例: ソラカメ画像取得アクション が出力する imageUrl。有効期限は URL 発行から 1 時間) を指定する場合は、有効期限内にこのアクションが実行されるように設定してください。
ファイルの指定例
ソラカメ画像取得アクションで取得した静止画をアップロードする
ソラカメ画像取得アクション の出力先のチャネルに Slack ファイルアップロードアクションを追加し、以下のように設定します。
- :
${payload.imageUrl} - :
${payload.deviceId} - :
${payload.deviceId} の静止画を取得しました。
複数のファイルを 1 つの式で指定する
をクリックすると、複数のファイルを 1 つの式で指定できます。式の評価結果は、以下のいずれかの形式である必要があります。

URL の配列
[ "https://example.com/image1.jpg", "https://example.com/image2.png" ]url(ファイルの URL) とtitle(ファイルのタイトル、省略可) を持つオブジェクトの配列[ { "url": "https://example.com/image1.jpg", "title": "入口のカメラ" }, { "url": "https://example.com/image2.png", "title": "倉庫のカメラ" } ]
たとえば、上記の形式の配列が payload.files に含まれる場合は、${payload.files} を指定すると、配列内のファイルをまとめてアップロードできます。メッセージ集約アクション の出力を使用する場合は、messages 内の各メッセージからファイルの URL を取り出し、上記の形式の配列に変換してください。
- 配列に URL として解釈できない要素 (
urlがないオブジェクトなど) が含まれる場合、その要素は無視され、残りのファイルがアップロードされます。 - の場合も、アップロードできるファイルは 10 件までです。
Slack ファイルアップロードアクションの出力データ
Slack ファイルアップロードアクションでファイルがアップロードされると、アップロードされたファイルの情報が出力されます。files には、Slack の files.completeUploadExternal (英語) から返されたファイルの情報が含まれます。
例:
{
"ok": true,
"files": [
{
"id": "F0123456789",
"title": "7CDDE9AAAAAA"
}
]
}
アップロードに失敗した場合は、エラーの内容が出力されます。Slack API がエラーを返した場合は、Slack のエラーコード (例: not_in_channel、missing_scope、invalid_auth) がエラーメッセージに含まれます。主なエラーコードと対処方法は以下のとおりです。
| エラーコード | 対処方法 |
|---|---|
invalid_auth、token_revoked、token_expired | 認証情報に登録した Bot トークンを確認してください。 |
missing_scope | Slack App の Bot Token Scopes に files:write を追加し、ワークスペースに再インストールしてください。 |
not_in_channel、channel_not_found | チャンネル ID を確認し、チャンネルに Slack App を招待してください。 |
ratelimited | Slack API のレート制限を超えました。アクションの実行頻度や、1 回の実行でアップロードするファイルの数を減らしてください。 |
Slack へのファイルの転送が完了したあとに、チャンネルへの投稿で失敗した場合、転送済みのファイルは Slack 上に非公開のまま残ります。SORACOM Flux はこのファイルを削除しません。