n8n のワークフロー自動化に Turnint AI のセッションイベントを流し込み、LLM で会話ログから重要情報を抽出して Slack に通知する構成の作り方です。
このレシピでは session-summarized イベントを使います。payload に session.transcript(会話ログの全文テキスト)と session.summary(要約)、session.importance(重要度)が含まれており、LLM に渡す素材として扱いやすいためです。payload の詳細は ウェブフック連携 を参照してください。
前提条件
- Turnint 側でタイプ「ウェブフック」のインテグレーションが作成済みで、「セッションが要約されたときに送信」 のみ有効化されていること(他のイベントは無効)。作成方法は ウェブフック連携 を参照。Webhook URL はこのあとのステップ 1 で発行する n8n の URL に差し替えます
- n8n のインスタンス(n8n Cloud または self-hosted)が稼働しており、ワークフロー作成権限があること
- Basic LLM Chain ノードで使う LLM プロバイダ(OpenAI / Anthropic など)の API キーを n8n の Credentials に登録済みであること
- 通知先の Slack ワークスペースが用意されていること
全体フロー
- Turnint AI でセッションが終了し、要約が完了すると
session-summarized イベントが発火する
- n8n の Webhook ノードがイベントを受信する
- Basic LLM Chain ノードが transcript を読み、見込み顧客に関する重要情報を構造化して抽出する
- Merge ノードが Webhook の元データ(要約・重要度など)と LLM の抽出結果を 1 つのアイテムに合流させる
- Slack ノードがチャンネルに通知を投稿する
ステップ 1: n8n 側で Webhook URL を用意する
n8n で新規ワークフローを作成し、先頭に Webhook ノードを追加します。
| 項目 | 値 |
|---|
| HTTP Method | POST |
| Path | 任意 |
| Response Mode | Immediately |
| Authentication | Header Auth(推奨・詳細は下記) |
ノードの Production URL をコピーします(https://<your-n8n>/webhook/<path> の形式)。Test URL ではなく Production URL を使ってください。
self-hosted n8n の場合、Turnint AI からアクセスできる公開 URL になっている必要があります。ローカル開発中は ngrok などのトンネルツールで公開してください。
Optional: 署名検証で送信元を確認する(推奨)
Turnint AI はすべての webhook リクエストに X-Turnint-Signature ヘッダを付けて送信します。値は連携ごとに一意な固定トークン(sig_...)で、ダッシュボードのウェブフック連携の詳細画面からコピーできます。
n8n の Webhook ノードで Authentication を Header Auth に設定し、以下の Credentials を作成してください。
| 項目 | 値 |
|---|
| Name | X-Turnint-Signature |
| Value | ダッシュボードからコピーしたシグネチャ(例: sig_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) |
これで、ヘッダの値が一致しないリクエストは Webhook ノードが自動で拒否するようになり、Turnint AI から送信された webhook であることを確認できます。
シグネチャは共有シークレットです。リポジトリや公開ドキュメントにそのまま貼り付けず、n8n の Credentials に登録して参照してください。万一漏洩した場合は、該当の連携を削除して新しく作成し直すことで新しいシグネチャが払い出されます。
ステップ 2: Turnint のウェブフック連携に n8n の URL を設定する
事前に作成しておいたウェブフック連携を開き、Webhook URL をステップ 1 でコピーした n8n の Production URL に差し替えて保存します。
イベントは 「セッションが要約されたときに送信」 のみが有効になっていることを確認してください。
送られてくる payload の構造は以下の通りです(抜粋)。
{
"type": "session-summarized",
"payload": {
"agent": { "id": "...", "name": "..." },
"session": {
"id": "...",
"context": { ... },
"summary": "セッションの要約テキスト",
"importance": "low" | "medium" | "high",
"transcript": "..."
}
},
"metadata": { ... }
}
ステップ 3: Basic LLM Chain で重要情報を抽出する
Webhook ノードの後ろに Basic LLM Chain ノードを追加します。
モデル設定
Chat Model を任意の LLM に接続します。Credentials には事前に API キーを登録しておいてください。
プロンプト例
transcript から見込み顧客に関する情報を JSON で抽出する日本語プロンプトの例です。
あなたは営業オペレーションのアシスタントです。以下の会話ログから、見込み顧客に関する情報を JSON 形式で抽出してください。不明な項目は null にしてください。
# ユーザー情報
{{ $json.body.payload.session.context.user.toJsonString() }}
# 会話ログ
{{ $json.body.payload.session.transcript }}
# セッション要約
{{ $json.body.payload.session.summary }}
{{ $json.body.payload.session.transcript }} の参照パスは、Webhook ノードが受信したデータ構造に合わせています。n8n 上で前のノードの出力をドラッグ&ドロップすれば自動で式が入ります。
ステップ 4: Merge で元データと LLM 出力を合流させる
Slack のメッセージ本文では、Webhook payload に入っている セッションコンテキスト(例: context.user.phone のように、ゲートで入力されたユーザー情報)と Basic LLM Chain の抽出結果 の両方を使いたいことが多いです。たとえば「この電話番号に必要なら架電してください」という通知に、LLM が抽出した会話のポイントを添える、というユースケースです。
n8n で複数ブランチのデータを 1 つの下流ノードに渡す最もシンプルな方法が Merge ノードです。Webhook ノードからもう 1 本線を引き、Basic LLM Chain と並列に Merge ノードへ接続します。
| 項目 | 値 |
|---|
| Mode | Combine |
| Combination Mode | Merge By Position |
Webhook と Basic LLM Chain はいずれも 1 アイテムずつ出力するため、位置ベースの Merge で 1 つのアイテムに統合され、下流の Slack ノードから両方のフィールドに $json.xxx でアクセスできるようになります。
ステップ 5: Slack ノードで通知する
Merge ノードの後ろに Slack ノードを追加します。
Slack への接続方法は 2 通りあります。
- Slack API の OAuth 接続(推奨): n8n の Credentials から Slack OAuth2 を追加し、
chat:write 権限を付与したチャンネルに投稿
- Incoming Webhook: Slack の Incoming Webhook URL を HTTP Request ノードから POST
Resource を Message、Operation を Send にして、Channel と Text を設定します。Merge 済みのアイテムから、セッションコンテキストと LLM の抽出結果を両方参照できます。
user: {{ $json.body.payload.session.context.user.phone }} に必要であれば架電してください。
情報:
```{{ $json.text }}```
context.user.phone の参照パスはゲートで phone フィールドを入力値として設定している場合の例です。ゲートで設定したキー名に合わせて context.user.<key> を書き換えてください。
動作確認
- n8n 側でワークフローを Active に切り替える
- Turnint AI のダッシュボードから対象エージェントのセッションを実際に発生させ、セッション終了後の要約処理が走るまで待つ
- n8n の Executions タブで Webhook 受信と各ノードの成功を確認する
- Slack チャンネルに通知が届くことを確認する
うまく届かない場合は、n8n の Executions の各ノード出力を開いて $json.body.payload の構造を確認し、Basic LLM Chain / Slack ノードの参照式と一致しているかをチェックしてください。
応用のヒント
同じワークフローに If ノードを足せば重要度で分岐、HTTP Request ノードや Salesforce / HubSpot ノードを繋げれば CRM への自動登録、別チャンネル通知などもすぐに組めます。
関連ドキュメント