> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Slack

## 概要

Slackインテグレーションを使うと、ElevenLabsエージェントがSlackでメッセージを送受信できます。接続すると、エージェントはチャンネル内でメンションされた際にスレッドで返信し、スレッドごとに個別の会話コンテキストを維持します。

## 機能

| 機能           | サポート                                                                                                    |
| ------------ | ------------------------------------------------------------------------------------------------------- |
| ゼロ保持モード（ZRM） | 非対応                                                                                                     |
| トリガー内の添付ファイル | エージェント設定で**ファイル添付を許可**が有効であり、エージェントのLLMが画像またはドキュメント入力をサポートしている場合、受信メッセージ内の画像（PNG、JPEG、GIF、WebP）とPDFファイル |
| ツール内の添付ファイル  | 非対応 — ツールはテキストのみを処理します                                                                                  |

## セットアップ

このインテグレーションには、2つの接続方法があります。

* **OAuth** — 共有のElevenLabs Slackアプリをワークスペースにインストールします。1つのSlackワークスペースは1つのElevenLabs接続に対応します。Slackアプリの管理は不要で、最も簡単にセットアップできます。
* **独自のアプリを使用** — 作成・所有するSlackアプリを使って接続します。ボットを自社ブランドで表示したい場合や、ワークスペースのポリシーで管理者によるアプリのインストールが必要な場合に使用します。

### オプションA — OAuth

アプリをインストールするユーザーには、対象のSlackワークスペースにアプリを追加する権限が必要です。

#### インテグレーションページを開く

ElevenLabsダッシュボードで、**Agents**＞**Integrations**に移動し、**Slack**を選択します。

#### Connectをクリックする

**OAuth**認証情報を選択し、**Connect**をクリックします。Slackにリダイレクトされるので、ElevenLabsアプリをインストールするワークスペースを選び、要求されたスコープを承認します。

#### リダイレクトを完了する

承認後、SlackからElevenLabsにリダイレクトされ、接続が作成されます。SlackワークスペースIDは自動的に記録され、トリガーの設定時に使用されます。

### オプションB — 独自のSlackアプリを使用

ボットを独自のアプリ名とアイコンで表示したい場合、またはワークスペースで管理者によるアプリの審査とインストールが必要な場合に使用します。

#### Slackアプリを作成する

[Slack API: Your Apps](https://api.slack.com/apps)に移動し、**Create New App**＞**From scratch**をクリックします。アプリに名前を付け、インストール先のSlackワークスペースを選択します。

#### ボットスコープを追加する

**OAuth & Permissions**を開き、次のBot Token Scopesを追加します。

`app_mentions:read`, `channels:history`, `channels:join`, `channels:manage`, `chat:write`, `files:read`, `groups:history`, `groups:write`, `im:history`, `reactions:write`。

次に、**Install to Workspace**をクリックして承認します。**Bot User OAuth Token**（`xoxb-`で始まります）をコピーします。

#### 署名シークレットをコピーする

**Basic Information**＞**App Credentials**を開き、**Signing Secret**をコピーします。

#### ElevenLabsで接続を作成する

ElevenLabsダッシュボードで、**Integrations**に移動し、**Add integration**ボタンをクリックして**Slack**を選択します。**独自のアプリを使用**認証情報を選択します。ボットトークンと署名シークレットを貼り付けて保存します。ElevenLabsがSlackに対してトークンを検証し、ワークスペースIDを記録します。

接続を作成すると、接続ページにSlackアプリのIDから導出された2つのWebhook URLが表示されます。同じElevenLabsワークスペースから同じSlackアプリを再接続すると、常に同じURLが生成されます。そのため、Slackアプリの設定を更新し直さずに接続を削除・再作成できます。次の手順のために、このページを開いたままにしてください。

#### イベントサブスクリプションを設定する

Slackアプリで**Event Subscriptions**を開き、イベントを有効にして、ElevenLabs接続ページの**Events URL**を**Request URL**に貼り付けます。Slackは、指定した署名シークレットを使用してURLを検証します。

チャンネルでのエージェントの動作に応じて、ボットイベントをサブスクライブします。

* **メンション時のみ** — `app_mention`をサブスクライブします。ユーザーがボットを`@`メンションした場合にのみ、エージェントが応答します。
* **すべてのメッセージ** — `message.channels`と`message.groups`をサブスクライブします。メンションの有無にかかわらず、ボットが参加しているチャンネル内のすべてのメッセージにエージェントが応答します。

**SlackDirectMessage**トリガーを使用する場合は、`message.im`もサブスクライブしてください。

重複配信を処理する意図がない限り、`app_mention`と`message.*`チャンネルイベントの両方をサブスクライブしないでください。ユーザーがボットを`@`メンションすると、Slackは同じメッセージに対して`app_mention`イベントと`message`イベントの両方を送信する場合があり、エージェントが2回応答します。

#### インタラクティビティを設定する

**Interactivity & Shortcuts**を開き、インタラクティビティを有効にして、ElevenLabs接続ページの**Interactivity URL**を**Request URL**に貼り付けます。

#### 求められた場合は再インストールする

スコープまたはイベントを変更した後にSlackからアプリの再インストールを求められた場合は、変更を適用するために再インストールしてください。

> **Note**
>
> Slackワークスペースは、共有ElevenLabs OAuthアプリ経由では1回しか接続できません。別のElevenLabsワークスペースから再インストールすると、`duplicate Slack workspace`エラーが返されます。まず既存の接続を削除してください。独自アプリの接続は独立しており、競合しません。

## OAuthスコープ

ElevenLabs Slackアプリは、次のスコープを要求します。

| スコープ                | 目的                                               |
| ------------------- | ------------------------------------------------ |
| `app_mentions:read` | ボットが`@`メンションされたメッセージを受信します。                      |
| `channels:history`  | ボットが参加しているパブリックチャンネルのメッセージを読み取ります。               |
| `channels:join`     | トリガー作成時にボットがパブリックチャンネルへ自動参加できるようにします。            |
| `channels:manage`   | チャンネル管理アクションを実行します。                              |
| `chat:write`        | チャンネルおよびスレッドにメッセージを投稿します。                        |
| `files:read`        | エージェントが画像やPDFを読み取れるよう、メッセージに添付されたファイルをダウンロードします。 |
| `groups:history`    | ボットが参加しているプライベートチャンネルのメッセージを読み取ります。              |
| `groups:write`      | プライベートチャンネルで操作します。                               |
| `im:history`        | ボットとのダイレクトメッセージチャンネルのメッセージを読み取ります。               |
| `reactions:write`   | メッセージおよびエージェントツールの思考インジケーター用にリアクションを追加・削除します。    |

## エージェントツール

エージェントにSlackツールを追加すると、次の組み込みツールを利用できます。

| ツール                     | 説明                                                                                                                                                                                                                                                                |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `slack_add_reaction`    | 絵文字リアクションを追加します。デフォルトでは、チャンネルとメッセージの`ts`に`integration__slack_channel_id`および`integration__slack_trigger_message_ts`が入力されます。モデルが選択するのは絵文字のショートコード（コロンなし）のみです（例：`thumbsup`）。Slackでトリガーされた会話以外では、これらの変数は設定しない限り存在しません。モデルがチャンネルと`ts`を明示的に渡す必要がある場合は、ツールスキーマを調整してください。 |
| `slack_remove_reaction` | 絵文字リアクションを削除します（追加時と同じデフォルト）。Slackでは、呼び出し元のボットは自分が追加したリアクションのみ削除できます。[reactions.remove](https://docs.slack.dev/reference/methods/reactions.remove)を参照してください。                                                                                                      |

## 接続を削除する

**Integrations**ページから接続を削除すると、SlackワークスペースからElevenLabs Slackアプリがアンインストールされます。削除後、ボットはどのチャンネルにも参加しなくなります。

独自アプリの接続では、ElevenLabsは所有していないアプリをアンインストールできません。接続を削除しても、ローカルマッピングが削除されるだけです。Slackワークスペースからボットを完全に削除するには、Slackの管理者設定からアプリをアンインストールしてください。

## トリガーを設定する

このインテグレーションでは、単一のトリガーである**SlackMessage**を提供します。設定したチャンネルでボットが新しいユーザーメッセージを検出すると、起動します。

#### SlackMessageトリガーを追加する

エージェントの設定ページで、新しいトリガーを追加し、**SlackMessage**を選択します。

#### エージェントとチャンネルを選択する

トリガーフィールドを設定します。

* **Agent**：会話を処理するエージェント。
* **Channel ID**：SlackチャンネルID（例：`C0123456789`）。UIにはSlackでチャンネルを開くディープリンクが表示されます。

#### トリガーを保存する

トリガーを保存します。ElevenLabsはボットをパブリックチャンネルに自動招待します。後でトリガーを削除すると、ボットはそのチャンネルから退出します。

> **Info**
>
> Slackでは、アプリがプライベートチャンネルに自動参加することはできません。プライベートチャンネルの場合は、トリガーを保存した後にそのチャンネルで`/invite
>   @Eleven`を実行し、ボットがメッセージを確認できるようにします。

> **Warning**
>
> `(Slack workspace, channel)`の組み合わせごとに許可されるトリガーは1つだけです。重複作成ではなく、既存のトリガーを編集してください。

## DMトリガーを設定する

**SlackDirectMessage**トリガーを使用すると、任意のSlackユーザーがボットにダイレクトメッセージを送ってエージェントと会話できます。チャンネルトリガーとは異なり、`@`メンションは不要です。ユーザーがボットとのDMで送信するすべてのメッセージが処理されます。

#### SlackDirectMessageトリガーを追加する

エージェントの設定ページで、新しいトリガーを追加し、**SlackDirectMessage**を選択します。

#### エージェントを選択する

DM会話を処理する**Agent**を選択します。

#### トリガーを保存する

トリガーを保存します。これで、ワークスペース内のすべてのSlackユーザーがボットとのDMを開き、会話を開始できます。

> **Info**
>
> BYOアプリでは、`message.im`ボットイベントをサブスクライブし、`im:history`ボットスコープを追加していることを確認してください。追加後に求められた場合は、アプリを再インストールしてください。

> **Warning**
>
> Slack接続ごとに許可されるDMトリガーは1つだけです。エージェントを変更するには、既存のトリガーを編集してください。

## Slackでボットと会話する

トリガーが有効になり、ボットがチャンネルに参加したら、チャンネルスレッドで会話を開始します。スレッドを続ける方法は、Slackアプリのイベントサブスクリプションによって異なります（OAuthではメンション時のみの動作を使用します）。

### メンション時のみ（`app_mention`）

#### メンションしてスレッドを開始する

チャンネルでボットをメンションして、新しいスレッドを開始します。例：`@Eleven what's the status of
    order 1234?`。ボットはそのメッセージのスレッド内で返信します。

#### スレッドを続ける

同じスレッド内でのフォローアップを含め、応答させたいすべてのメッセージで再度ボットをメンションします。メンションのないメッセージは無視されます。

### すべてのメッセージ（`message.channels`、`message.groups`）

#### スレッドを開始する

ボットが参加しているチャンネルで任意のメッセージを送信します。ボットはそのメッセージのスレッド内で返信します。ボットを`@`メンションする必要はありません。

#### スレッドを続ける

ボットをメンションせずに同じスレッドで返信します。スレッド内の新しいメッセージはすべて処理されます。

ボットは応答を生成している間、ユーザーのトリガーメッセージに`:eyes:`リアクションを追加し、返信が投稿されると削除します。

Channel Messageトリガーの**Respond to messages from**設定により、エージェントをトリガーできる対象を制御します。

* **Only humans**（デフォルト）：他のボットやSlackワークフローからのメッセージは無視されます。これは安全なデフォルトであり、既存のトリガーの動作を維持します。
* **Humans and bots**：他のボットからのメッセージや、ワークフローによって投稿されたメッセージ（レガシーの`bot_message`イベントを含む）もエージェントをトリガーします。

どちらの設定でも、ボットはSlackの署名付きWebhookに含まれるボットユーザーおよびアプリIDを使用して、自身のメッセージを常に無視します。そのため、自身がメンションされた場合でも自分自身に返信することはありません。また、編集済みメッセージ（`message_changed`）と削除済みメッセージ（`message_deleted`）は引き続き無視されます。`message`イベントと`app_mention`イベントを処理し、パブリックチャンネルとプライベートチャンネルの両方で機能します。

> **Note**
>
> `bot_id`のみを含むレガシーボットイベントでは、送信者は識別できますが、受信アプリは識別できません。これらは別のボットからのメッセージとして扱われます。このSlackアプリの自己ループ検出には、最新のSlackイベントペイロードに含まれるボットユーザーまたはアプリIDを使用します。

> **Warning**
>
> Slackアプリが`app_mention`と`message.channels`／`message.groups`の両方をサブスクライブしている場合、1つの`@`メンションでエージェントの応答が2回トリガーされる可能性があります。どちらか一方のモードのみをサブスクライブしてください。

## 会話モデル

会話IDは、`(agent_id, channel_id, thread_ts)`ごとに決定されます。

* 新しいSlackスレッドは、新しいElevenLabs会話に対応します。
* 同じスレッドを続けると、文字起こし履歴や動的変数を含む同じ会話が継続されます。

チャット履歴を構築する際、ボットはSlackスレッドを直接読み取ります。Slackメンバーと他のボットからのメッセージはユーザーターンとして扱われ、ボット自身のメッセージはエージェントターンとして扱われます。ボットユーザーへのメンション（`<@BOT_USER_ID>`）は、エージェントが処理する前に`@<agent_name>`へ書き換えられます。

### 動的変数

Slackからエージェントを実行すると、次の動的変数をプロンプトとツールで利用できます。

| 変数                                      | 説明                                                     |
| --------------------------------------- | ------------------------------------------------------ |
| `integration__slack_channel_id`         | SlackチャンネルID。                                          |
| `integration__slack_thread_ts`          | Slackスレッドのタイムスタンプ。                                     |
| `integration__slack_user_id`            | Slack送信者ID。ユーザーID、またはユーザーのないレガシーボットイベントの場合はボットIDです。    |
| `integration__slack_team_id`            | Slackワークスペース（チーム）ID。                                   |
| `integration__slack_connection_id`      | ElevenLabsインテグレーション接続ID。                               |
| `integration__slack_trigger_message_ts` | このエージェントターンをトリガーしたメッセージのSlack `ts`（チャンネル内の一意のメッセージID）。 |

プロンプトおよびツール呼び出しでの参照方法については、[動的変数](/docs/ja/eleven-agents/customization/personalization/dynamic-variables)を参照してください。

## トラブルシューティング

### ファイル添付が機能しない

ユーザーがSlackで画像またはPDFを添付してもエージェントが処理しない場合（またはファイルが送信されていないかのように動作する場合）、以下を確認してください。

#### Slackアプリにfiles:readがあることを確認する

ボットがSlackから添付ファイルをダウンロードするには、`files:read`ボットスコープが必要です。

* **独自のアプリを使用** — [Slack API: Your Apps](https://api.slack.com/apps)でアプリを開き、**OAuth & Permissions**に移動して、**Bot Token Scopes**に`files:read`が表示されていることを確認します。最近追加した場合は、トークンに新しいスコープを反映させるため、アプリをワークスペースに再インストールしてください。

#### エージェントモデルがファイル入力をサポートしていることを確認する

ファイル添付が転送されるのは、エージェントのLLMがマルチモーダル入力（ファイルタイプに応じて画像入力および／またはドキュメント（PDF）入力）をサポートしている場合のみです。エージェント設定で**Agent**タブを開き、選択されているモデルを確認します。モデルが添付ファイルの種類をサポートしていない場合は、サポートするモデルに切り替えてください。

#### エージェント設定でAllow file attachmentsを有効にする

エージェントの設定ページで、**Settings**＞**Advanced**を開きます。**Multimodal input**で、**Allow file attachments**をオンにします。エージェントを保存します。この設定がない場合、Slackアプリとモデルがファイルをサポートしていても、Slackの添付ファイルは無視されます。

## 役立つリンク

* [Slack APIドキュメント](https://api.slack.com/docs)
* [Slackアプリの権限](https://api.slack.com/scopes)