detect-conversation-type について
ServiceNowの各種エンゲージメントチャネルでの会話を分類し、ルーティングや後続対応に活用するスキルです。問い合わせ、依頼、苦情、フィードバック、エスカレーション、トラブルシューティング、フォローアップに加え、複数の意図も扱います。
主な機能
- 01会話を7種類に分類
- 02会話内の複数の意図を検出
- 03分類をルーティング規則に対応付け
- 04インタラクションに分類メタデータを追加
- 05担当者の修正から精度を追跡
活用シーン
- 01Virtual Agentトピックのルーティング設定
- 02会話を担当者や対応キューへ振り分け
- 03インタラクションレコードへの分類追加
- 04担当者の修正を基に規則を改善
MCP 対応
ServiceNowのMCPツールでメッセージやインタラクションレコードを取得し、トピックを検索して、後続レコードや分類メタデータを作成・更新します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill detect-conversation-typeインストール後、Claude Code で/detect-conversation-typeを入力して読み込まれたか確認します。
詳細
会話タイプの検出と分類
概要
このスキルは、ServiceNow のエンゲージメントチャネル(Virtual Agent、チャット、メール、ポータル)で発生している会話のタイプを検出して分類し、インテリジェントなルーティングと対応を可能にします。
- 問い合わせ:サービス、ポリシー、ステータスに関する情報を求める質問
- リクエスト:対応可能なサービスリクエストまたはカタログ注文
- 苦情:サービスの回復対応が必要な、不満の表明
- フィードバック:サービス、プロセス、体験に関する建設的な意見
- エスカレーション:即時の対応または管理者の関与が必要な緊急の問題
- トラブルシューティング:診断手順が必要な技術的な問題解決
- フォローアップ:以前の会話または既存のチケットの続き
使用する場面: Virtual Agent のトピックルーティングを構築するとき、分類メタデータでインタラクションレコードを拡充するとき、会話の引き継ぎ判断を自動化するとき、またはサービス改善のために会話のパターンを分析するときです。
前提条件
- ロール:
admin、sn_customerservice_manager、itil、またはvirtual_agent_admin - プラグイン:
com.glide.cs.chatbot(Virtual Agent)、com.glide.interaction(Agent Workspace Interaction) - アクセス権:
sys_cs_conversation、sys_cs_message、interactionテーブルへの読み取りアクセス - 知識: Virtual Agent のトピック設計、会話フローの概念、感情分析の基礎
- 関連スキル: 感情スコアリング用の
csm/sentiment-analysis、応答候補用のcsm/chat-recommendation
手順
ステップ 1:会話メッセージを取得する
分類のために会話履歴を取得します。
MCP の方法:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_message
query: conversation=<conversation_sys_id>^ORDERBYsys_created_on
fields: sys_id,body,direction,sys_created_on,typed_by,message_type
limit: 50
REST の方法:
GET /api/now/table/sys_cs_message
?sysparm_query=conversation=<conversation_sys_id>^ORDERBYsys_created_on
&sysparm_fields=sys_id,body,direction,sys_created_on,typed_by,message_type
&sysparm_limit=50
インタラクションベースの会話の場合:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: sys_id=<interaction_sys_id>
fields: sys_id,short_description,type,channel,state,opened_for,assigned_to,opened_at,work_notes
limit: 1
ステップ 2:最初のユーザーメッセージを分析する
最初のユーザーメッセージは、会話タイプを判断する最も強い手がかりです。次の項目を抽出します。
インテントのシグナル:
| シグナルの種類 | 例 | 分類 |
|---|---|---|
| 疑問詞 | "How do I..."、"What is..."、"Where can I..." | 問い合わせ |
| 行動を示す動詞 | "I need..."、"Please set up..."、"Can you create..." | リクエスト |
| 否定的な感情 | "This is unacceptable..."、"I'm frustrated..." | 苦情 |
| 提案を示す表現 | "It would be nice if..."、"Have you considered..." | フィードバック |
| 緊急性を示す語句 | "URGENT"、"This is critical"、"Need help NOW" | エスカレーション |
| 問題の説明 | "It's not working"、"I'm getting an error..." | トラブルシューティング |
| 以前の会話への言及 | "Following up on INC..."、"As discussed..." | フォローアップ |
ステップ 3:分類ルールを適用する
重み付け分析を使用して、会話を各タイプに照らしてスコアリングします。
=== CONVERSATION CLASSIFICATION ===
Conversation ID: CS0045678
Channel: Virtual Agent (Service Portal)
User: Jane Smith (Engineering)
Initial Message: "I've been waiting 5 days for my laptop and no one
has contacted me. This is the third time I've had to follow up.
I need this resolved today or I need to speak with a manager."
Classification Scores:
| Type | Score | Signals Detected |
|-----------------|-------|------------------|
| Complaint | 85% | Negative sentiment, dissatisfaction, wait time mention |
| Escalation | 75% | "speak with a manager", urgency ("today") |
| Follow-up | 60% | "third time", reference to prior interaction |
| Request | 30% | "need this resolved" (implicit service need) |
| Inquiry | 10% | No information-seeking language |
| Feedback | 5% | No constructive suggestion |
| Troubleshooting | 5% | No technical problem described |
PRIMARY: Complaint (85%)
SECONDARY: Escalation (75%)
COMPOSITE: Complaint with Escalation Request
URGENCY: High
SENTIMENT: Negative (frustrated)
PRIORITY ACTION: Route to human agent with escalation flag
ステップ 4:複数のインテントを含む会話を検出する
1 つの会話に複数のインテントが含まれる場合があります。該当するものをすべて特定します。
MCP の方法:
Tool: SN-Query-Table
Parameters:
query: 123TEXTQUERY321=laptop delivery delay complaint escalation
table_name: sys_cb_topic
limit: 10
インテントの変化を把握するため、メッセージごとに分析します。
Message 1: "I need to reset my password" -> Request
Message 2: "Also, the VPN has been slow all week" -> Troubleshooting
Message 3: "And when will the new laptops be available?" -> Inquiry
Classification: Multi-intent conversation
Primary: Request (password reset - most actionable)
Secondary: Troubleshooting (VPN performance)
Tertiary: Inquiry (laptop availability)
ステップ 5:分類をルーティングルールに対応付ける
分類に基づいて、適切な対応ワークフローを決定します。
ルーティングマトリックス:
| 分類 | チャネル | 優先度 | ルーティング先 |
|---|---|---|---|
| 問い合わせ | Virtual Agent | 低 | ナレッジ検索 -> FAQ トピック |
| リクエスト | Virtual Agent | 中 | カタログアイテムのトピック -> フルフィルメント |
| 苦情 | ライブエージェント | 高 | CSM キュー -> サービス回復 |
| フィードバック | 非同期 | 低 | フィードバック収集 -> アンケート |
| エスカレーション | ライブエージェント | クリティカル | マネージャーキュー -> 優先対応 |
| トラブルシューティング | Virtual Agent | 中 | 診断トピック -> IT サポート |
| フォローアップ | ライブエージェント | 中 | 元の担当者 -> コンテキストの再開 |
MCP の方法:
Tool: SN-Query-Table
Parameters:
table_name: sys_cb_topic
query: nameLIKEcomplaint^active=true
fields: sys_id,name,description,queue,priority,active
limit: 5
ステップ 6:インタラクションレコードを拡充する
分類メタデータでインタラクションまたは会話レコードを更新します。
MCP の方法:
Tool: SN-Update-Record
Parameters:
table_name: interaction
sys_id: <interaction_sys_id>
data:
u_conversation_type: "complaint"
u_secondary_type: "escalation"
u_urgency: "high"
u_sentiment: "negative"
u_classification_confidence: "85"
u_routing_recommendation: "csm_escalation_queue"
REST の方法:
PATCH /api/now/table/interaction/<interaction_sys_id>
Body: {
"u_conversation_type": "complaint",
"u_secondary_type": "escalation",
"u_urgency": "high",
"u_sentiment": "negative"
}
ステップ 7:タイプに基づいて後続レコードを作成する
分類に基づいて、適切なレコードを自動的に作成します。
苦情の場合 -- CSM ケースを作成します:
MCP のアプローチ:
Tool: SN-Create-Record
Parameters:
table_name: sn_customerservice_case
data:
short_description: "Complaint: Laptop delivery delay - 3rd follow-up"
description: "<conversation summary>"
priority: 2
contact: "<user_sys_id>"
category: "complaint"
u_complaint_type: "service_delivery"
u_source_conversation: "<conversation_sys_id>"
リクエストの場合 -- カタログリクエストを作成します:
Tool: SN-Create-Record
Parameters:
table_name: sc_request
data:
requested_for: "<user_sys_id>"
short_description: "Password reset request via chat"
description: "<conversation context>"
u_source_conversation: "<conversation_sys_id>"
ステップ 8:エスカレーションのルーティングを処理する
エスカレーションが検出されたら、直ちにルーティングを開始します。
MCP のアプローチ:
Tool: SN-Update-Record
Parameters:
table_name: interaction
sys_id: <interaction_sys_id>
data:
state: "transferred_to_agent"
assignment_group: "<escalation_queue_sys_id>"
u_escalation_reason: "Customer requested manager involvement"
u_escalation_priority: "high"
work_notes: "AI Classification: Complaint with escalation request. Customer has followed up 3 times regarding laptop delivery delay. Sentiment: Negative/Frustrated. Routing to escalation queue."
ステップ 9:分類精度を追跡する
分類の判断を継続的に監視し、検証します。
MCP のアプローチ:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: u_conversation_typeISNOTEMPTY^sys_created_on>javascript:gs.daysAgo(30)
fields: u_conversation_type,u_classification_confidence,state,u_agent_override_type
limit: 500
精度の指標を計算します:
=== CLASSIFICATION ACCURACY (Last 30 Days) ===
| Type | Classified | Agent Override | Accuracy |
|-----------------|-----------|---------------|----------|
| Inquiry | 245 | 12 | 95.1% |
| Request | 189 | 8 | 95.8% |
| Complaint | 67 | 5 | 92.5% |
| Troubleshooting | 156 | 11 | 92.9% |
| Escalation | 34 | 3 | 91.2% |
| Feedback | 28 | 4 | 85.7% |
| Follow-up | 42 | 6 | 85.7% |
Overall Accuracy: 93.4%
Most Common Misclassification: Feedback classified as Inquiry
ステップ 10:分類ルールを改善する
上書きデータを使用して、分類精度を向上させます。
MCP のアプローチ:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: u_agent_override_typeISNOTEMPTY^u_conversation_type!=u_agent_override_type
fields: u_conversation_type,u_agent_override_type,short_description
limit: 50
誤分類を分析して傾向を特定し、ルーティングルールを更新します。
ツールの使用方法
| ツール | 目的 | 使用するタイミング |
|---|---|---|
| SN-Query-Table | 会話、メッセージ、トピック、指標を取得します | 主なデータ取得 |
| SN-Get-Record | 特定のインタラクションの詳細を取得します | 単一の会話の分析 |
| SN-Create-Record | 後続レコード(ケース、インシデント)を作成します | 分類に基づいて対応するとき |
| SN-Update-Record | 分類メタデータでインタラクションを充実させます | 分類結果の記録 |
| SN-Natural-Language-Search | 一致するトピックや類似の会話を検索します | トピックのルーティングとパターンマッチング |
ベストプラクティス
- 最初のメッセージで分類する -- 初回の分類を行うために、複数回のやり取りを待たないでください
- 再分類に対応する -- 会話の途中でタイプが変わることがあります。分類を動的に更新してください
- 信頼度のしきい値を使用する -- 信頼度が70%未満の場合は、分類を人間のエージェントに引き継いでください
- 意図と感情を組み合わせる -- ネガティブな感情を伴うリクエストは、実際には苦情である可能性があります
- 複数の意図を適切に処理する -- 最も緊急性の高い意図に最初に対応し、その後で二次的な意図に対応してください
- 会話のコンテキストを保持する -- 分類メタデータ全体を、引き継ぎ先のエージェントまたはワークフローに渡してください
- エージェントによる上書きを追跡する -- 上書きデータを学習シグナルとして使用し、分類ルールを改善してください
- チャネルのコンテキストを考慮する -- 電話の通話には、チャットやメールとは異なるパターンがあります
- 言語やトーンの変化を検出する -- 中立的な表現からネガティブな表現への変化は、エスカレーションの兆候であることがよくあります
- プライバシーを尊重する -- メタデータフィールドに機密性の高い個人情報を記録または分類しないでください
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| メッセージが取得されない | 会話テーブルまたはID形式が間違っています | sys_cs_conversation テーブルと interaction テーブルのどちらを使用しているか確認してください |
| 分類が常に「問い合わせ」になる | デフォルトのフォールバックが積極的すぎます | 問い合わせのしきい値を下げ、シグナルパターンを追加してください |
| エスカレーションが検出されない | 緊急性を示す表現がシグナルリストにありません | 検出ルールに、ドメイン固有の緊急性を示す表現を追加してください |
| 複数の意図が処理されない | 最初の意図しか抽出されていません | 意図を蓄積しながら、メッセージごとに分析する処理を実装してください |
| 誤ったキューにルーティングされる | トピックのマッピングが古くなっています | sys_cb_topic のルーティング設定を更新してください |
| 信頼度スコアが低い | メッセージが曖昧、または非常に短いです | 分類の前に、ユーザーに確認を求めてください |
例
例 1:仮想エージェントによる問い合わせの分類
入力: ユーザーメッセージ:「2026年の会社の休日を教えてください。」
分類: 問い合わせ(信頼度95%)。ナレッジ検索トピックにルーティングします。推奨するナレッジベース記事:「2026年の会社休日カレンダー」。
例 2:エスカレーション検出を伴う苦情
入力: ユーザーメッセージ:「2週間前にリクエストを送信しましたが、何も進んでいません。まったく受け入れられません。実際に対応してくれる人と話す必要があります。」
分類: 苦情(88%)+エスカレーション(80%)。エスカレーションキューのライブエージェントにルーティングします。優先度を高く設定します。このユーザーの既存の未完了リクエストを自動検索します。
例 3:複数の意図があるチャットセッション
入力: ユーザーが 3 件のメッセージを送信します。パスワードのリセット依頼、VPN ポリシーに関する質問、ポータルのデザインに関するフィードバックです。
分類: 複数の意図を検出しました。主な意図:依頼(パスワードのリセット、対応可能)。副次的な意図:問い合わせ(VPN ポリシー)。3 つ目の意図:フィードバック(ポータル)。パスワードのリセットを IT トピックに振り分け、VPN に関する質問をナレッジ検索のキューに追加し、UX チームのレビュー用にフィードバックを記録します。
関連スキル
csm/sentiment-analysis- 会話の詳細な感情分析csm/chat-recommendation- エージェント向けの返信候補hrsd/chat-reply-recommendation- HR に特化したチャット返信候補genai/playbook-recommendations- 会話に適した対応プレイブックを特定itsm/incident-triage- インシデントの分類と振り分け