Soracom

Users

ドキュメント
Home ドキュメント SORACOM Flux アクションリファレンス

Slack ファイルアップロードアクション

Slack ファイルアップロードアクションは、指定された URL からファイルを取得し、指定された Slack チャンネルにアップロードします。ソラカメ画像取得アクションで取得した静止画など、ほかのアクションが出力したファイルを Slack で共有できます。

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

Standard プラン、Enterprise プランで利用できます

プランについて詳しくは、SORACOM Flux のプラン を参照してください。

チャネルにアクションを追加する手順については、チャネルにアクションを追加する (処理を分岐する) を参照してください。

Slack 側の準備

Slack ファイルアップロードアクションは、Slack App の Bot トークンを使用してファイルをアップロードします。あらかじめ、Slack で以下の準備をしてください。

  1. Slack App を作成します。

  2. 作成した Slack App の Bot Token Scopes に files:write を追加します。

  3. Slack App をワークスペースにインストールします。

    インストールすると、Bot トークン (xoxb- で始まる文字列) が発行されます。Bot トークンについて詳しくは、Slack の Token types (英語) を参照してください。

  4. ファイルをアップロードするチャンネルに、作成した Slack App を招待します。

  5. ファイルをアップロードするチャンネルのチャンネル ID (例: C0123456789) を確認します。

  6. 発行された Bot トークンを、認証情報ストアに API トークン認証情報 として登録します。

    [API トークン] に Bot トークンを入力します。認証情報を登録する操作について詳しくは、認証情報を登録する を参照してください。

Slack ファイルアップロードアクションの設定

ここでは、Slack ファイルアップロードアクションの CONFIG について説明します。そのほかの項目については、アクションリファレンスの 「新しいアクションを作成」画面 を参照してください。

CONFIG

アップロードするファイルとアップロード先を設定します。

項目説明
[認証情報](必須) Slack App の Bot トークンを登録した API トークン認証情報を選択します。詳しくは、Slack 側の準備 を参照してください。
[チャンネル ID]

(必須) ファイルをアップロードする Slack チャンネルのチャンネル ID (例: C0123456789) を入力します。

  • この入力欄では、Flux アプリが起動するトリガーに関するデータを表す式 (例: ${event.payload.channelId}) や、アクションを追加したチャネルに関するデータを表す式 (例: ${payload.channelId}) を入力できます。入力できる式について詳しくは、アクション、コンディションの記法 を参照してください。
[ファイル]

アップロードするファイルの URL と、Slack に表示するファイルのタイトルを入力します。行を追加すると、最大 10 件のファイルをアップロードできます。

  • [ファイル URL]: (必須) ファイルの URL を入力します。
  • [ファイルタイトル]: Slack に表示するファイルのタイトルを入力します。省略した場合は、取得したファイルのファイル名がタイトルになります。
  • [ファイル URL] と [ファイルタイトル] では、Flux アプリが起動するトリガーに関するデータを表す式 (例: ${event.payload.fileUrl}) や、アクションを追加したチャネルに関するデータを表す式 (例: ${payload.fileUrl}) を入力できます。入力できる式について詳しくは、アクション、コンディションの記法 を参照してください。
  • [式を使って複数の値を指定する (高度な機能)] をクリックすると、複数のファイルを 1 つの式 (例: ${payload.files}) で指定できます。詳しくは、複数のファイルを 1 つの式で指定する を参照してください。
[メッセージ]

ファイルと一緒に送信するメッセージを入力します。

  • この入力欄では、Flux アプリが起動するトリガーに関するデータを表す式 (例: ${event.payload.name}) や、アクションを追加したチャネルに関するデータを表す式 (例: ${payload.name}) を入力できます。入力できる式について詳しくは、アクション、コンディションの記法 を参照してください。
[高度な設定] → [スレッドタイムスタンプ]

スレッドに返信としてアップロードする場合に、親メッセージのタイムスタンプ (thread_ts、例: 1234567890.123456) を入力します。省略した場合は、チャンネルに投稿されます。

  • この入力欄では、Flux アプリが起動するトリガーに関するデータを表す式や、アクションを追加したチャネルに関するデータを表す式を入力できます。入力できる式について詳しくは、アクション、コンディションの記法 を参照してください。

アップロードできるファイル

  • 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 ファイルアップロードアクションを追加し、以下のように設定します。

  • [ファイル URL]: ${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_scopeSlack App の Bot Token Scopes に files:write を追加し、ワークスペースに再インストールしてください。
not_in_channel、channel_not_foundチャンネル ID を確認し、チャンネルに Slack App を招待してください。
ratelimitedSlack API のレート制限を超えました。アクションの実行頻度や、1 回の実行でアップロードするファイルの数を減らしてください。

Slack へのファイルの転送が完了したあとに、チャンネルへの投稿で失敗した場合、転送済みのファイルは Slack 上に非公開のまま残ります。SORACOM Flux はこのファイルを削除しません。