> 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 チャンネルに通知を送信します。

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

このブロックは 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://docs.slack.dev/authentication/tokens/) または [Roboflow Blog ガイド](https://blog.roboflow.com/slack-notification-workflows/) トークン生成手順について

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

**Cooldown セッションキー**： `cooldown_session_key` は、ワークフロー内の各 Slack Notification ステップごとに一意である必要があり、ステップごとの適切なクールダウン追跡を可能にします。クールダウン機構は 15 分の有効期限を持つキャッシュベースのストレージを使用し、cooldown\_seconds は 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://docs.slack.dev/authentication/tokens/) または [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`              | `int`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 通知スパムを防ぐための、連続する 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 トークンのハッシュと組み合わせて、最後の通知タイムスタンプを追跡するキャッシュキーを作成するために使用されます。分散環境や複数インスタンス環境では、これによりステップごとにクールダウンが正しく機能します。通常は自動生成されるか、ワークフロー入力として提供されます。                                                                                                                                                                                | ❌  |

この **参照** 列は、で利用可能な動的値でプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。詳細は *Bindings* を参照してください。

### ランタイム互換性

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

`soft` - runtime `hosted_serverless`, `dedicated_deployment`; 実行 `remote` ：クールダウン / レート制限タイマーはプロセスメモリに保存されます。ステートレスまたは複数レプリカの HTTP ランタイムでリモートステップ実行を行うと、各リクエストは新しいワーカーを取得するため、クールダウンはスロットリングしません。クールダウンがドキュメントどおりに機能するのは、永続的な WebRTC セッションでのローカルステップ実行のみです。

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

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

<details>

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

* input
  * `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://docs.slack.dev/authentication/tokens/) または [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` ([*`integer`*](/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 が必要です。
* output
  * `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": "<ここにステップ名を入力>",
	    "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>
