handoff-detection について
自動営業ボットから人間の担当者へ会話を引き継ぐ仕組みを設計するスキルです。エスカレーションの兆候、振り分け、コンテキスト共有、実績の検証を扱います。
主な機能
- 01明示的・行動的な条件の設定
- 02ルールベースと ML 検出の併用
- 03スキルと対応状況に応じた振り分け
- 04会話コンテキストの引き継ぎ
- 05引き継ぎ結果の追跡
活用シーン
- 01不満や複雑な問い合わせのエスカレーション
- 02価格の質問を営業担当者へ振り分け
- 03会話履歴を人間の担当者へ共有
- 04引き継ぎ率と解決状況の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ louisblythe/ sales-skills --skill handoff-detectionインストール後、Claude Code で/handoff-detectionを入力して読み込まれたか確認します。
詳細
セールスボットの引き継ぎ検知
自動セールスボット向けの引き継ぎシステムの設計を専門としています。目標は、人間の担当者に会話をエスカレーションするタイミングを把握できるシステムの構築を支援することです。
初期評価
ガイダンスを提供する前に、以下を把握してください。
-
コンテキスト
- 会話を担当しているのは、どのような種類のボットですか?
- 引き継ぎに対応できる人員はどれくらいいますか?
- 何を最適化しようとしていますか?
-
現状
- 現在、引き継ぎはどのように行われていますか?
- 顧客はどのような場合に人間の担当者を求めますか?
- 引き継ぎの成功率はどれくらいですか?
-
目標
- 引き継ぎ検知を改善すると、何を実現できますか?
- 自動化と人間の対応のバランスを、どのように取りたいですか?
基本原則
1. 高価値案件は人間が、大量対応はボットが担当
- すべての会話に人間の対応が必要なわけではありません
- 人間は得意な対応に集中すべきです
- 定型業務は自動化し、複雑な案件はエスカレーションします
2. 顧客に求められる前に検知
- 顧客が不満を募らせるまで待たないでください
- シグナルを早期に認識します
- 事後対応より、積極的な引き継ぎを優先します
3. 円滑な引き継ぎで信頼を守る
- コンテキストを引き継ぐ必要があります
- 顧客に同じ説明を繰り返させないようにします
- 人間の担当者が適切に対応できるようにします
4. 引き継ぎから学ぶ
- すべての引き継ぎがフィードバックになります
- これは自動化できたでしょうか?
- これは常にエスカレーションすべきでしょうか?
引き継ぎのトリガー
明示的なリクエスト
明確なシグナル:
- 「人間の担当者と話させてください」
- 「誰かと話せますか?」
- 「実際の担当者を出してください」
- 「エージェントに転送してください」
- 「人間の担当者と話したいです」
実装:
- 優先度の高いトリガー
- 即時にエスカレーション
- リクエストを受け付けたことを伝える
応答: 「もちろんです!チームの担当者におつなぎします。少々お待ちください……」
感情トリガー
否定的な感情のシグナル:
- すべて大文字のメッセージ
- 罵り言葉
- 不満の高まり
- 苦情の繰り返し
しきい値によるアプローチ:
- 会話全体を通じて感情を追跡します
- 感情がしきい値を下回った場合にエスカレーションします
- 傾向が一貫して否定的な場合にエスカレーションします
応答: 「ご不満に感じていることが分かります。直接対応できる担当者におつなぎします。」
複雑さのトリガー
複雑な状況:
- トレーニング範囲を超える技術的な質問
- 複数の要素を含む問題
- カスタム要件
- 法律またはコンプライアンスに関する質問
- 価格交渉
検知:
- 複雑さを示すキーワード
- 複数の問題を含む長いメッセージ
- 「エスカレーション」パターンに一致する質問
失敗のトリガー
ボットの限界:
- 意図を理解できない(2 回以上)
- 質問に回答できない
- 誤った応答が検知された
- 会話が堂々巡りになっている
実装:
if (clarification_attempts >= 2) {
escalate("I want to make sure you get the right help.
Let me connect you with a team member.")
}
価値に基づくトリガー
高価値の状況:
- 大型案件
- 大企業
- 緊急性の高いスケジュール
- 競合が関わる状況
実装:
- リードスコアのしきい値
- 企業規模のしきい値
- 明示的な高い購入意欲のシグナル
- 戦略アカウントのフラグ
引き継ぎ検知システム
ルールベースの検知
キーワードトリガー:
HUMAN_REQUEST:
- "talk to human"
- "real person"
- "agent"
- "representative"
- "speak to someone"
FRUSTRATION:
- "this is ridiculous"
- "waste of time"
- "doesn't help"
- profanity_list
しきい値トリガー:
if (messages_without_resolution > 5) → escalate
if (sentiment_score < -0.5) → escalate
if (repeated_question_count >= 2) → escalate
ML ベースの検知
特徴量:
- メッセージの内容
- 感情スコア
- 会話の長さ
- 応答パターン
- ユーザー履歴
出力:
- 人間の対応が必要である確率
- 推奨アクション
- 緊急度
ハイブリッドアプローチ
即時エスカレーション(ルール):
- 人間の担当者への明示的なリクエスト
- 深刻な不満
- コンプライアンス/法律関連のトリガー
スコアに基づくエスカレーション(ML):
- シグナルの蓄積
- 不満の予測
- 複雑さの推定
引き継ぎプロセス
引き継ぎ前
確認: 「最適なサポートを受けていただけるようにしたいと思います。担当者におつなぎします。」
見通しを伝える: 「担当者がまもなく対応します。お待ちの間に、担当者に伝えておくべきことはありますか?」
情報を収集:
- 連絡先情報を確認します
- 希望する連絡方法を確認します
- 緊急度を記録します
コンテキストの引き継ぎ
引き継ぐ情報:
- 会話の全トランスクリプト
- 顧客情報
- 検知した意図
- 感情の要約
- すでに提供した回答
- エスカレーションが発生した理由
形式:
HANDOFF SUMMARY
Customer: Sarah Johnson, Acme Corp
Channel: Chat → Phone requested
Escalation reason: Complex pricing question
Key points:
- Looking for enterprise pricing
- Has 500+ employees
- Evaluating 3 vendors
- Decision timeline: 2 weeks
Sentiment: Neutral → slightly frustrated at response speed
Questions answered: Product features, basic pricing
Unanswered: Volume discounts, custom integrations
引き継ぎ後
確認: 「お客様の情報を[Agent name]に共有しました。[timeframe]以内に連絡があります。」
同期的に引き継ぐ場合: 「[Agent name]が今から参加します。これまでの会話を共有しました。」
フォローアップ: 引き継ぎの解決状況と結果を追跡します。
引き継ぎのルーティング
ルーティング要因
スキルベース:
- 技術的な質問 → 技術担当者
- 料金に関する質問 → 営業担当者
- 苦情 → サポート担当者
- エンタープライズ → アカウントエグゼクティブ
負荷ベース:
- 対応可能なエージェント
- キューの長さ
- 推定待ち時間
関係性ベース:
- 既存のアカウント担当者
- 過去に対応したエージェントの希望
- 地域の適合性
ルーティングロジック
function routeHandoff(context) {
// Priority 1: Existing relationship
if (context.assigned_rep && context.assigned_rep.available) {
return context.assigned_rep
}
// Priority 2: Skill match
let skill_queue = getSkillQueue(context.escalation_type)
let available_agents = skill_queue.filter(a => a.available)
// Priority 3: Load balancing
if (available_agents.length > 0) {
return available_agents.sort(by_queue_length)[0]
}
// Fallback: Callback queue
return "callback_queue"
}
対応可能な担当者がいない場合
対応可能なエージェントがいない場合
応答: 「現在、対応できる者がおりませんが、お客様にサポートを受けていただけるようにしたいと思っています。[timeframe]以内に誰かからお電話またはメールでご連絡するよう手配してもよろしいでしょうか?」
収集する情報:
- 連絡先情報
- 連絡に最適な時間
- 問い合わせ内容の簡単な概要
フォローアップ:
- 直ちに確認メールを送信する
- 折り返し連絡が確実に行われるようにする
- 解決状況を追跡する
営業時間外
応答: 「現在、チームはオフラインです(対応時間:[hours])。明日の朝一番にご連絡するよう手配しましょうか。それとも、今すぐ私にお手伝いできることはありますか?」
選択肢:
- セルフサービスのリソース
- FAQ の回答
- 折り返し連絡の予約
- 緊急エスカレーション(該当する場合)
引き継ぎのパフォーマンス測定
主要な指標
件数:
- 引き継ぎ率(会話に占める割合)
- 1 日/1 週間あたりの引き継ぎ件数
- トリガーの種類別の引き継ぎ件数
品質:
- 引き継ぎ後の顧客満足度
- 引き継ぎ後の解決率
- 再問い合わせ率
効率:
- 引き継ぎまでの時間
- コンテキスト転送の完全性
- エージェントの事前準備時間
引き継ぎの分析
確認する質問:
- 最も頻繁に作動するトリガーはどれですか?
- 引き継ぎは適切に解決されていますか?
- 自動化できる引き継ぎはありますか?
- エスカレーションが多すぎたり少なすぎたりしていませんか?
改善サイクル:
- 引き継ぎの会話記録を確認する
- パターンを特定する
- ボットがより多くの問題に対応できるよう改善する
- エスカレーショントリガーを調整する
- よくある問題について人間の担当者をトレーニングする
よくある引き継ぎの失敗
1. エスカレーションが遅すぎる
問題: 顧客がすでに不満を感じている
対処法: より早く検知し、しきい値を下げる
2. エスカレーションが早すぎる
問題: 人間の担当チームに負荷がかかりすぎる
対処法: ボットの機能を向上させ、しきい値を慎重に上げる
3. コンテキストの転送が不十分
問題: 顧客が同じ説明を繰り返す
対処法: 会話全体を転送し、要点を要約する
4. 説明がない
問題: 顧客が何が起きているのかわからない
対処法: 引き継ぎのプロセスを明確に伝える
5. 引き継ぎ後の対応がない
問題: 引き継ぎが見落とされる
対処法: キューの管理、追跡、責任の明確化
実装チェックリスト
フェーズ 1:基本的な引き継ぎ
- 人間の担当者への明示的なリクエストを検知する
- 対応可能なエージェントへの基本的なルーティング
- 会話記録の転送
- 確認メッセージ
フェーズ 2:スマートな引き継ぎ
- 感情分析に基づくトリガー
- 複雑さの検知
- スキルベースのルーティング
- コンテキストの要約
フェーズ 3:最適化された引き継ぎ
- ML に基づく予測
- 価値に基づく優先順位付け
- パフォーマンス分析
- 継続的な改善サイクル
確認する質問
さらに詳しい情報が必要な場合:
- 現在、人間の担当者への引き継ぎは何をきっかけに行われていますか?
- 引き継ぎに対応できる人員はどのくらいいますか?
- 現在の引き継ぎ率はどのくらいですか?
- 顧客は引き継ぎにどのような反応を示しますか?
- 人間の担当者が効果的に対応を引き継ぐには、どのような情報が必要ですか?
関連スキル
- sentiment-analysis:不満の検知に使用
- intent-detection:複雑なリクエストの特定に使用
- conversational-flow-management:スムーズな移行に使用
- compliance-handling:必須のエスカレーションに使用