> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/notifications/slack-notification.md).

# Slack通知

Slack チャンネルに通知を送信します。メッセージ内容はカスタマイズ可能で、動的なワークフローデータのパラメータ、ファイル添付、キャッシュベースのセッション追跡によるクールダウン制御、チームアラート、監視、リアルタイム通信ワークフロー向けの任意の非同期バックグラウンド実行を備えています。

## このブロックの仕組み

このブロックは Slack Web API を使用して Slack チャンネルに通知を送信し、ワークフロー実行結果をメッセージ内容に統合します。このブロックは次のことを行います：

1. が無効かどうかを確認します `disable_sink` フラグ（無効なら、送信せずに即時終了します）
2. Slack トークンのハッシュと `cooldown_session_key` （ワークフローステップごとに一意）
3. キャッシュで最後の通知タイムスタンプを確認してクールダウン期間を検証し（有効な場合、次の期間内の通知を抑制し `cooldown_seconds` 最後に送信した通知の、スロットリング状態を返します)
4. 指定されたトークンに対して Slack WebClient インスタンスを作成または取得します（効率化のため、クライアントはトークンのハッシュでキャッシュされます）
5. 動的パラメータを処理してメッセージを整形します（次のようなプレースホルダーを置換します `{{ $parameters.parameter_name }}` を使用して実際のワークフローデータに置換します `message_parameters`)
6. UQL 操作を任意で適用し、挿入前にパラメーター値を変換します（例: 検出からクラス名を抽出、指標を計算、データをフィルタリング） `message_parameters_operations`
7. 指定された Slack チャンネルに通知を送信します：
   * **添付ファイルなし**: `chat_postMessage` テキストのみのメッセージを送信する API
   * **添付ファイルあり**: `files_upload_v2` メッセージを初期コメントとしてファイルをアップロードする API
8. 現在の通知タイムスタンプでキャッシュを更新します（15 分後に期限切れ）
9. 次に基づいて同期または非同期で実行します `fire_and_forget` 設定:
   * **同期モード** (`fire_and_forget=False`): Slack API 呼び出しの完了を待機し、デバッグ用に実際のエラー状態を返します
   * **非同期モード** (`fire_and_forget=True`): バックグラウンドタスクで通知を送信し、ワークフローは直ちに継続、エラー状態は常に False
10. 成功、スロットリング、またはエラーを示すステータス出力を返します（利用可能な場合は Slack API のエラー詳細を含みます）

このブロックは、実行時にワークフローデータで置き換えられるパラメータプレースホルダーを通じて動的なメッセージ内容をサポートします。メッセージパラメータは、未加工のワークフロー出力でも、UQL 操作で変換されたものでも構いません（例：プロパティの抽出、件数の計算、値のフィルタリング）。添付ファイルは、文字列またはバイナリコンテンツを出力する他のワークフローブロックから取得されます（例：レポート用の CSV Formatter、可視化用の画像出力）。クールダウンは、キャッシュベースの追跡とセッションキーを使って送信間の最小時間を強制することで通知スパムを防ぎ、分散環境や複数インスタンス環境でステップごとのスロットリングを可能にします。

## 要件

**Slack API トークン**: Slack API トークン（Bot Token または User Token）が必要で、適切な権限を持っている必要があります：

* トークンには `chat:write` 権限が必要です。チャンネルにメッセージを送信するため
* トークンには `files:write` 権限が必要です。添付ファイルを使用する場合
* トークンはワークフロー入力経由で提供するか（セキュリティ上推奨）、ワークフロー定義に保存できます
* 表示 [Slack API ドキュメント](https://api.slack.com/tutorials/tracks/getting-a-token) または [Roboflow Blog のガイド](https://blog.roboflow.com/slack-notification-workflows/) トークン生成手順について

**チャンネル設定**: 有効な Slack チャンネル識別子（チャンネル ID または '#' で始まるチャンネル名）を必要とします `#`). トークンに関連付けられた bot または user は、そのチャンネルのメンバーである必要があります。

**クールダウン用セッションキー**: `cooldown_session_key` 各 Slack Notification ステップで一意である必要があります。これにより、ステップごとのクールダウン追跡を正しく行えます。クールダウン機構は、15 分の有効期限を持つキャッシュベースのストレージを使用し、クールダウン秒数は 0 から 900（15 分）の間でなければなりません。

## 一般的な使用例

* **チームアラート通知**: 未承認オブジェクトの検出時にセキュリティチームへ警告する、異常検出時に運用へ通知する、検出数がしきい値を超えたときにアラートを送るなど、特定の条件が検出された際に Slack でチームチャンネルへアラートを送信し、リアルタイムのチーム連携とインシデント対応を可能にします
* **ワークフロー実行の更新**: バッチ処理完了時にチームへ通知する、日次サマリーレポートを送る、ワークフロー失敗を警告するなど、ワークフローの実行ステータスと結果に関する Slack 通知を送信し、自動化された処理の可視性をチームに提供します
* **検出サマリー**: 検出結果と集計統計を含む Slack メッセージを送信します（例：検出されたオブジェクトの一覧を共有する、件数と分類を送る、検出信頼度の要約を含めるなど）ことで、ステークホルダーがチームのコミュニケーションチャネルを通じてワークフローの出力を把握できるようにします
* **レポート配布**: 生成されたレポートやデータ書き出しを Slack 経由でアップロードして共有します（例：CSV Formatter の CSV レポートを添付する、エクスポートした検出データを共有する、整形された分析サマリーを含めるなど）ことで、チームチャンネルを通じた自動データ配布を可能にします
* **リアルタイム監視**: 継続的な監視更新とステータス通知を送信します（例：システム健全性の問題を通知する、定期的なパフォーマンス指標を送る、処理マイルストーンを警告するなど）ことで、運用監視のためのリアルタイム可視性を提供します
* **マルチチャンネル配信**: ワークフロー条件やルーティングロジックに基づいて、異なる Slack チャンネルへ通知を送信します（例：検出タイプごとに異なるチャンネルへアラートを送る、重大度レベルで通知を振り分ける、部門別チャンネルへレポートを配布するなど）ことで、対象を絞ったコミュニケーションと通知ルーティングを可能にします

## 他のブロックへの接続

このブロックはワークフローステップからデータを受け取り、Slack 通知を送信します：

* **検出または解析ブロックの後** (例：Object Detection、Instance Segmentation、Classification）により、オブジェクトが検出されたとき、分類が行われたとき、またはしきい値を超えたときにアラートや要約を送信し、リアルタイムのチーム通知とコラボレーションを可能にします
* **データ処理ブロックの後** (例：Expression、Property Definition、Detections Filter）により、計算済みメトリクス、変換済みデータ、またはフィルタリング結果を Slack 通知に含め、処理済みデータを用いたチームチャンネル向けのカスタマイズされたレポートを可能にします
* **フォーマッターブロックの後** (例：CSV Formatter）により、整形されたレポートやエクスポートを Slack メッセージに添付し、構造化データや分析結果の自動配布をチームコミュニケーションチャネルを通じて可能にします
* **条件分岐ワークフローでは** (例：Continue If）により、特定の条件が満たされた場合にのみ通知を送信し、イベント駆動のアラートとチームコミュニケーションを可能にします
* **集計ブロックの後** (例：Data Aggregator）により、定期的な分析サマリーや統計レポートを Slack に送信し、予定されたチーム更新とトレンド分析を可能にします
* **監視ワークフローでは** ステータス更新、エラー通知、またはヘルスチェックレポートをチームチャンネルに送信し、Slack を通じた自動システム監視とインシデント管理を可能にします

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/slack_notification@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**                          | **型**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | **説明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 参照 |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                          | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                                                                                                    | ❌  |
| `slack_token`                   | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Slack API と認証するための Slack API トークン（Bot Token または User Token）です。メッセージ送信には 'chat:write' スコープが必要で、添付ファイルを使用する場合は 'files:write' スコープも必要です。セキュリティのため、このトークンは private としてマークされています。ワークフロー定義に保存するのではなく、SECRET\_KIND セレクターを使用してワークフロー入力経由で提供することを推奨します。トークンは Slack API アプリまたはワークスペース管理から生成できます。詳細は [Slack API ドキュメント](https://api.slack.com/tutorials/tracks/getting-a-token) または [Roboflow Blog のガイド](https://blog.roboflow.com/slack-notification-workflows/) セットアップ手順を参照してください。。 | ✅  |
| `channel`                       | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 通知が送信される Slack チャンネルの識別子です。チャンネル ID（例：'C1234567890'）または '#' で始まるチャンネル名（例：'#alerts'、'#general'）を指定できます。Slack トークンに関連付けられた bot または user は、そのチャンネルのメンバーである必要があります。チャンネル名は Slack API によって自動的にチャンネル ID に変換されます。。                                                                                                                                                                                                                                                                | ✅  |
| `message`                       | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Slack チャンネルに送信するメッセージ内容（プレーンテキスト）です。次のプレースホルダー構文を使用した動的パラメータをサポートします： `{{ $parameters.parameter_name }}`. プレースホルダーは実行時に message\_parameters の値で置き換えられます。メッセージは複数行テキストにできます。添付ファイルが指定されている場合、このメッセージはファイルアップロードに添付される初期コメントになります。例：'Detected `{{ $parameters.num_objects }}` objects. Classes: `{{ $parameters.classes }}`.'.                                                                                                                                               | ❌  |
| `message_parameters`            | `Dict[str, Union[bool, float, int, str]]`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | メッセージ内のプレースホルダーで使用されるパラメーター名をワークフローデータソースに対応付ける辞書。キーはメッセージ内で `{{ $parameters.key }}`として参照されるパラメーター名で、値はワークフローステップ出力または直接値へのセレクターです。これらの値は実行時にメッセージプレースホルダーに置換されます。必要に応じて message\_parameters\_operations を使用して、置換前にパラメーター値を変換できます。                                                                                                                                                                                                                                         | ✅  |
| `message_parameters_operations` | `Dict[str, List[Union[ClassificationPropertyExtract, ConvertDictionaryToJSON, ConvertImageToBase64, ConvertImageToJPEG, DetectionsFilter, DetectionsOffset, DetectionsPropertyExtract, DetectionsRename, DetectionsSelection, DetectionsShift, DetectionsToDictionary, Divide, ExtractDetectionProperty, ExtractFrameMetadata, ExtractImageProperty, LookupTable, Multiply, NumberRound, NumericSequenceAggregate, PickDetectionsByParentClass, RandomNumber, SequenceAggregate, SequenceApply, SequenceElementsCount, SequenceLength, SequenceMap, SortDetections, StringMatches, StringSubSequence, StringToLowerCase, StringToUpperCase, TimestampToISOFormat, ToBoolean, ToNumber, ToString]]]` | message\_parameters からのパラメーター名を、メッセージに挿入する前にパラメーター値を変換する UQL 操作チェーンへ対応付ける任意の辞書。操作は順番に適用されます（例: 検出からクラス名を抽出、件数を計算、値をフィルタリング）。キーは message\_parameters 内のパラメーター名と一致している必要があります。変換が不要なパラメーターは空のままにするか、省略してください。                                                                                                                                                                                                                                                                | ❌  |
| `fire_and_forget`               | `bool`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 実行モード：非同期のバックグラウンド送信では True（ワークフローは直ちに継続し、error\_status は常に False、実行は高速）、同期送信では False（Slack API 呼び出しの完了を待機し、デバッグ用に実際のエラー状態を返す）。Slack API エラーを捕捉するため、開発およびデバッグ時は False に設定してください。通知配信のタイミングが重要でない本番環境では、より高速なワークフロー実行のために True に設定してください。。                                                                                                                                                                                                                                  | ✅  |
| `disable_sink`                  | `bool`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 実行時に Slack 通知送信を無効化するフラグです。True の場合、ブロックは通知送信をスキップし、無効化メッセージを返します。ワークフロー入力による条件付き通知制御に便利です（例：テストのために呼び出し元が通知を無効化できるようにする、設定に応じて有効/無効を切り替える）。実行時制御のためにワークフロー入力で設定します。。                                                                                                                                                                                                                                                                                                      | ✅  |
| `cooldown_seconds`              | `整数`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 連続する Slack 通知の間隔を少なくとも何秒空けるかを指定し、通知スパムを防ぎます。既定値は 5 秒です。0 に設定するとクールダウンを無効化できます（スロットリングなし）。0 から 900（15 分）の間でなければなりません。クールダウン期間中、ブロックは throttling\_status=True を返し、送信をスキップします。クールダウンは cooldown\_session\_key を使ってステップごとに追跡され、キャッシュベースのストレージ（15 分の有効期限）を使用します。ワークフロー内の各 Slack Notification ステップには、ステップごとの追跡を正しく行うために一意の cooldown\_session\_key を設定する必要があります。。                                                                                                                  | ✅  |
| `cooldown_session_key`          | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | この Slack Notification ステップのクールダウン追跡セッションの一意識別子です。ワークフロー内の各 Slack Notification ステップごとに一意である必要があり、ステップごとのクールダウンを適切に分離できるようにします。Slack トークンのハッシュと組み合わせて、最後の通知タイムスタンプを追跡するキャッシュキーを作成するために使用されます。分散環境や複数インスタンス環境では、これによりステップごとにクールダウンが正しく機能します。通常は自動生成されるか、ワークフロー入力として提供されます。。                                                                                                                                                                                                   | ❌  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### ランタイム互換性

`requires_internet` - エアギャップ／オフライン環境: このブロックは、完全にオフライン／エアギャップ環境から到達できないサービスに依存しています。

`soft` - ランタイム `hosted_serverless`, `dedicated_deployment`；実行 `リモート` : クールダウン／レート制限タイマーはプロセスメモリに保存されます。ステートレスまたは複数レプリカのHTTPランタイムでリモートステップ実行を行う場合、各リクエストごとに新しいワーカーが割り当てられるため、クールダウンはスロットリングしません。クールダウンが文書どおりに機能するのは、永続的なWebRTCセッションでのローカルステップ実行のみです。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `Slack通知` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `slack_token` (*Union\[*[*`secret`*](/workflows/ja/gaido/developer-guide/kinds/secret.md)*,* [*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)*]*): Slack API と認証するための Slack API トークン（Bot Token または User Token）です。メッセージ送信には 'chat:write' スコープが必要で、添付ファイルを使用する場合は 'files:write' スコープも必要です。セキュリティのため、このトークンは private としてマークされています。ワークフロー定義に保存するのではなく、SECRET\_KIND セレクターを使用してワークフロー入力経由で提供することを推奨します。トークンは Slack API アプリまたはワークスペース管理から生成できます。詳細は [Slack API ドキュメント](https://api.slack.com/tutorials/tracks/getting-a-token) または [Roboflow Blog のガイド](https://blog.roboflow.com/slack-notification-workflows/) セットアップ手順を参照してください。。
  * `channel` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)): 通知が送信される Slack チャンネルの識別子です。チャンネル ID（例：'C1234567890'）または '#' で始まるチャンネル名（例：'#alerts'、'#general'）を指定できます。Slack トークンに関連付けられた bot または user は、そのチャンネルのメンバーである必要があります。チャンネル名は Slack API によって自動的にチャンネル ID に変換されます。。
  * `message_parameters` ([*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)) : メッセージ内のプレースホルダーで使用されるパラメーター名をワークフローデータソースに対応付ける辞書。キーはメッセージ内で `{{ $parameters.key }}`として参照されるパラメーター名で、値はワークフローステップ出力または直接値へのセレクターです。これらの値は実行時にメッセージプレースホルダーに置換されます。必要に応じて message\_parameters\_operations を使用して、置換前にパラメーター値を変換できます。
  * `attachments` (*Union\[*[*`bytes`*](/workflows/ja/gaido/developer-guide/kinds/bytes.md)*,* [*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)*]*): 添付ファイル名からファイルコンテンツを提供するワークフローステップ出力への対応付けを行う任意の辞書です。キーは添付ファイル名（例：'report.csv'、'image.jpg'）、値は文字列またはバイナリコンテンツを出力するブロックへのセレクター（例：CSV Formatter の出力、画像データ、生成レポート）です。ファイルは files\_upload\_v2 API を使用して Slack にアップロードされ、メッセージは初期コメントになります。添付ファイルが不要な場合は空のままにしてください。Slack トークンには 'files:write' スコープが必要です。。
  * `fire_and_forget` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): 実行モード：非同期のバックグラウンド送信では True（ワークフローは直ちに継続し、error\_status は常に False、実行は高速）、同期送信では False（Slack API 呼び出しの完了を待機し、デバッグ用に実際のエラー状態を返す）。Slack API エラーを捕捉するため、開発およびデバッグ時は False に設定してください。通知配信のタイミングが重要でない本番環境では、より高速なワークフロー実行のために True に設定してください。。
  * `disable_sink` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): 実行時に Slack 通知送信を無効化するフラグです。True の場合、ブロックは通知送信をスキップし、無効化メッセージを返します。ワークフロー入力による条件付き通知制御に便利です（例：テストのために呼び出し元が通知を無効化できるようにする、設定に応じて有効/無効を切り替える）。実行時制御のためにワークフロー入力で設定します。。
  * `cooldown_seconds` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 連続する Slack 通知の間隔を少なくとも何秒空けるかを指定し、通知スパムを防ぎます。既定値は 5 秒です。0 に設定するとクールダウンを無効化できます（スロットリングなし）。0 から 900（15 分）の間でなければなりません。クールダウン期間中、ブロックは throttling\_status=True を返し、送信をスキップします。クールダウンは cooldown\_session\_key を使ってステップごとに追跡され、キャッシュベースのストレージ（15 分の有効期限）を使用します。ワークフロー内の各 Slack Notification ステップには、ステップごとの追跡を正しく行うために一意の cooldown\_session\_key を設定する必要があります。。
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `throttling_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `message` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)) : 文字列値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/slack_notification@v1",
	    "slack_token": "$inputs.slack_token",
	    "channel": "$inputs.slack_channel_id",
	    "message": "直近5分間で {{ $parameters.num_instances }} 件のインスタンスを検出しました",
	    "message_parameters": {
	        "predictions": "$steps.model.predictions",
	        "reference": "$inputs.reference_class_names"
	    },
	    "message_parameters_operations": {
	        "predictions": [
	            {
	                "property_name": "class_name",
	                "type": "DetectionsPropertyExtract"
	            }
	        ]
	    },
	    "attachments": {
	        "report.csv": "$steps.csv_formatter.csv_content"
	    },
	    "fire_and_forget": "$inputs.fire_and_forget",
	    "disable_sink": false,
	    "cooldown_seconds": "$inputs.cooldown_seconds",
	    "cooldown_session_key": "session-1v73kdhfse"
	}
```

</details>
