Slack
SlackワークスペースをElevenLabs Agentsに接続し、チャンネルやスレッドでエージェントと会話
概要
Slackインテグレーションを使うと、ElevenLabsエージェントがSlackでメッセージを送受信できます。接続すると、エージェントはチャンネル内でメンションされた際にスレッドで返信し、スレッドごとに個別の会話コンテキストを維持します。
機能
セットアップ
このインテグレーションには、2つの接続方法があります。
- OAuth — 共有のElevenLabs Slackアプリをワークスペースにインストールします。1つのSlackワークスペースは1つのElevenLabs接続に対応します。Slackアプリの管理は不要で、最も簡単にセットアップできます。
- 独自のアプリを使用 — 作成・所有するSlackアプリを使って接続します。ボットを自社ブランドで表示したい場合や、ワークスペースのポリシーで管理者によるアプリのインストールが必要な場合に使用します。
オプションA — OAuth
アプリをインストールするユーザーには、対象のSlackワークスペースにアプリを追加する権限が必要です。
オプションB — 独自のSlackアプリを使用
ボットを独自のアプリ名とアイコンで表示したい場合、またはワークスペースで管理者によるアプリの審査とインストールが必要な場合に使用します。
Slackアプリを作成する
Slack API: Your 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-で始まります)をコピーします。
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回応答します。
Slackワークスペースは、共有ElevenLabs OAuthアプリ経由では1回しか接続できません。別のElevenLabsワークスペースから再インストールすると、duplicate Slack workspaceエラーが返されます。まず既存の接続を削除してください。独自アプリの接続は独立しており、競合しません。
OAuthスコープ
ElevenLabs Slackアプリは、次のスコープを要求します。
エージェントツール
エージェントにSlackツールを追加すると、次の組み込みツールを利用できます。
接続を削除する
Integrationsページから接続を削除すると、SlackワークスペースからElevenLabs Slackアプリがアンインストールされます。削除後、ボットはどのチャンネルにも参加しなくなります。
独自アプリの接続では、ElevenLabsは所有していないアプリをアンインストールできません。接続を削除しても、ローカルマッピングが削除されるだけです。Slackワークスペースからボットを完全に削除するには、Slackの管理者設定からアプリをアンインストールしてください。
トリガーを設定する
このインテグレーションでは、単一のトリガーであるSlackMessageを提供します。設定したチャンネルでボットが新しいユーザーメッセージを検出すると、起動します。
Slackでは、アプリがプライベートチャンネルに自動参加することはできません。プライベートチャンネルの場合は、トリガーを保存した後にそのチャンネルで/invite @Elevenを実行し、ボットがメッセージを確認できるようにします。
(Slack workspace, channel)の組み合わせごとに許可されるトリガーは1つだけです。重複作成ではなく、既存のトリガーを編集してください。
DMトリガーを設定する
SlackDirectMessageトリガーを使用すると、任意のSlackユーザーがボットにダイレクトメッセージを送ってエージェントと会話できます。チャンネルトリガーとは異なり、@メンションは不要です。ユーザーがボットとのDMで送信するすべてのメッセージが処理されます。
BYOアプリでは、message.imボットイベントをサブスクライブし、im:historyボットスコープを追加していることを確認してください。追加後に求められた場合は、アプリを再インストールしてください。
Slack接続ごとに許可されるDMトリガーは1つだけです。エージェントを変更するには、既存のトリガーを編集してください。
Slackでボットと会話する
トリガーが有効になり、ボットがチャンネルに参加したら、チャンネルスレッドで会話を開始します。スレッドを続ける方法は、Slackアプリのイベントサブスクリプションによって異なります(OAuthではメンション時のみの動作を使用します)。
メンション時のみ(app_mention)
すべてのメッセージ(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イベントを処理し、パブリックチャンネルとプライベートチャンネルの両方で機能します。
bot_idのみを含むレガシーボットイベントでは、送信者は識別できますが、受信アプリは識別できません。これらは別のボットからのメッセージとして扱われます。このSlackアプリの自己ループ検出には、最新のSlackイベントペイロードに含まれるボットユーザーまたはアプリIDを使用します。
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からエージェントを実行すると、次の動的変数をプロンプトとツールで利用できます。
プロンプトおよびツール呼び出しでの参照方法については、動的変数を参照してください。
トラブルシューティング
ファイル添付が機能しない
ユーザーがSlackで画像またはPDFを添付してもエージェントが処理しない場合(またはファイルが送信されていないかのように動作する場合)、以下を確認してください。
Slackアプリにfiles:readがあることを確認する
ボットがSlackから添付ファイルをダウンロードするには、files:readボットスコープが必要です。
- 独自のアプリを使用 — Slack API: Your Appsでアプリを開き、OAuth & Permissionsに移動して、Bot Token Scopesに
files:readが表示されていることを確認します。最近追加した場合は、トークンに新しいスコープを反映させるため、アプリをワークスペースに再インストールしてください。