incident-sentiment について
ServiceNowのインシデント対応チーム向けのスキルで、チケット上のやり取りの感情を分析し、エスカレーションリスクを見積もります。感情の推移にSLA期限の近さや再割り当て状況を組み合わせ、優先順位付けと早期対応を支援します。
主な機能
- 01作業メモ、コメント、メールの分析
- 02感情分類と推移の追跡
- 03インシデントのエスカレーションリスク算出
- 04感情を考慮した優先順位の提案
- 05一括傾向分析とアラート
活用シーン
- 01進行中インシデントのリスク監視
- 02顧客の不満を把握した早期対応
- 03サポートグループ間の感情傾向分析
MCP 対応
MCP ツールで ServiceNow のインシデント、ジャーナル、メールを検索し、レコードの更新や作業メモの追加を行います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill incident-sentimentインストール後、Claude Code で/incident-sentimentを入力して読み込まれたか確認します。
詳細
インシデントの感情分析
概要
このスキルは、作業メモ、追加コメント、メールのやり取り、アクティビティログの記録など、インシデント関連のコミュニケーションの感情を分析し、否定的な傾向を検出し、エスカレーションのリスクを予測するとともに、インシデントのライフサイクルを通じて顧客満足度を追跡します。
- 作業メモ、コメント、メールのやり取りからテキストを抽出して分析します
- 感情を肯定的、中立、否定的、重大に分類します
- 感情の推移と言語的なシグナルに基づいて、エスカレーションリスクスコアを算出します
- 正式にエスカレーションされる前に、不満を抱えた顧客を特定します
- インシデントのライフサイクル各段階における感情の傾向を追跡します
- 感情を考慮した優先順位付けの推奨事項を生成します
使用する場面: アクティブなインシデントのエスカレーションリスクを監視するとき、顧客満足度の傾向を分析するとき、またはリスクのあるチケットに対する先回りの介入ワークフローを構築するときに使用します。
前提条件
- ロール:
itil、incident_manager、またはanalytics_admin - プラグイン:
com.snc.incident(インシデント管理) - アクセス権:
incident、sys_journal_field、sn_si_incident、sys_audit、sys_emailの読み取り権限 - 知識: 組織のエスカレーション基準と SLA しきい値に関する理解
- データ: 分析対象となる作業メモと顧客とのコミュニケーションを含むインシデント
手順
ステップ 1:感情分析の対象となるインシデントを選択する
アクティブなインシデントをクエリし、最近アクティビティがあったものや SLA 違反が迫っているものを優先します。
MCP を使用する場合(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: incident
query: active=true^priorityIN1,2^sys_updated_on>=javascript:gs.hoursAgo(24)
fields: sys_id,number,short_description,priority,state,assigned_to,assignment_group,sla_due,sys_updated_on
limit: 30
REST API を使用する場合:
GET /api/now/table/incident?sysparm_query=active=true^priorityIN1,2^sys_updated_on>=javascript:gs.hoursAgo(24)&sysparm_fields=sys_id,number,short_description,priority,state,assigned_to,assignment_group,sla_due,sys_updated_on&sysparm_limit=30
ステップ 2:作業メモとコメントを取得する
各インシデントのすべてのジャーナルエントリー(作業メモと追加コメント)を抽出します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[incident_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on
fields: sys_id,element,value,sys_created_by,sys_created_on
limit: 50
REST API を使用する場合:
GET /api/now/table/sys_journal_field?sysparm_query=element_id=[incident_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on&sysparm_fields=sys_id,element,value,sys_created_by,sys_created_on&sysparm_limit=50
ステップ 3:メールでのやり取りを取得する
インシデントに関連するメールのやり取りを確認します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=[incident_sys_id]^type=received
fields: sys_id,subject,body_text,sender,sys_created_on
limit: 20
REST API を使用する場合:
GET /api/now/table/sys_email?sysparm_query=instance=[incident_sys_id]^type=received&sysparm_fields=sys_id,subject,body_text,sender,sys_created_on&sysparm_limit=20
ステップ 4:各エントリーの感情を分類する
各テキストエントリーを分析し、感情の分類を割り当てます。
| 感情 | スコア範囲 | 指標 |
|---|---|---|
| 重大 | -1.0 ~ -0.7 | 脅迫、冒涜的な言葉、経営幹部へのエスカレーションへの言及、法的な言及 |
| 否定的 | -0.7 ~ -0.3 | 不満、繰り返される苦情、緊急性を示す言葉、すべて大文字の表記 |
| 中立 | -0.3 ~ 0.3 | 事実に基づく更新、状況確認、技術情報 |
| 肯定的 | 0.3 ~ 0.7 | 感謝、謝意、満足を示す表現 |
| 非常に肯定的 | 0.7 ~ 1.0 | 明確な称賛、満足のいく形での問題解決 |
否定的な感情を示すキーワードとフレーズ:
| カテゴリ | キーワード/フレーズ | 重み |
|---|---|---|
| 不満 | "still not working"、"again"、"how many times"、"unacceptable" | -0.4 |
| 緊急性 | "ASAP"、"immediately"、"critical"、"business impact"、"revenue loss" | -0.3 |
| エスカレーションの意図 | "manager"、"supervisor"、"escalate"、"executive"、"CIO" | -0.5 |
| 不満足 | "disappointed"、"poor service"、"no response"、"ignored" | -0.4 |
| 脅迫 | "legal"、"contract"、"SLA penalty"、"vendor review" | -0.6 |
| 繰り返しの問い合わせ | "calling again"、"third time"、"follow up again" | -0.3 |
肯定的な感情を示すキーワードとフレーズ:
| カテゴリ | キーワード/フレーズ | 重み |
|---|---|---|
| 感謝 | "thank you"、"appreciate"、"great job"、"helpful" | +0.4 |
| 問題解決 | "fixed"、"working now"、"resolved"、"all good" | +0.5 |
| 理解の表明 | "understand"、"makes sense"、"will try that" | +0.2 |
ステップ 5:エスカレーションリスクスコアを算出する
感情の推移に基づいて、全体的なエスカレーションリスクスコアを算出します。
escalation_risk = (current_sentiment * 0.40)
+ (sentiment_trend * 0.25)
+ (sla_proximity * 0.20)
+ (reassignment_count * 0.15)
ここで:
- current_sentiment:最新の感情スコア(反転値:-1.0 の「深刻」は 1.0 のリスク)
- sentiment_trend:変化率(悪化している場合はリスクが高くなります)
- sla_proximity:SLA 違反までの近さ(0.0=十分な時間がある、1.0=違反済み)
- reassignment_count:再割り当て回数の正規化値(再割り当てごとに摩擦が加わります)
| リスクレベル | スコア | 推奨される対応 |
|---|---|---|
| 低 | 0.0-0.3 | 通常の対応を継続 |
| 中程度 | 0.3-0.5 | より頻繁に監視 |
| 高 | 0.5-0.7 | チームリーダーに通知し、先回りした連絡を検討 |
| 緊急 | 0.7-1.0 | 直ちにマネージャーによる介入が必要 |
ステップ 6:構造化されたインシデントデータを確認する
構造化されたインシデントインテリジェンステーブルを照会し、追加のシグナルを確認します。
MCP を使用:
Tool: SN-Query-Table
Parameters:
table_name: sn_si_incident
query: incident=[incident_sys_id]
fields: sys_id,incident,sentiment_score,customer_effort_score,escalation_likelihood
limit: 1
REST API を使用:
GET /api/now/table/sn_si_incident?sysparm_query=incident=[incident_sys_id]&sysparm_fields=sys_id,incident,sentiment_score,customer_effort_score,escalation_likelihood&sysparm_limit=1
ステップ 7:感情レポートを生成する
インシデントごとの感情分析レポートを作成します。
MCP を使用:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [incident_sys_id]
work_notes: |
=== SENTIMENT ANALYSIS REPORT ===
Incident: [number]
Analysis Date: [current_date]
Entries Analyzed: [count]
SENTIMENT TIMELINE:
[timestamp] Comment (Customer): NEGATIVE (-0.6)
"This is the third time I've called about this issue..."
[timestamp] Work Note (Agent): NEUTRAL (0.1)
"Reassigned to Network team for further investigation"
[timestamp] Comment (Customer): CRITICAL (-0.8)
"I need this escalated to management immediately..."
CURRENT SENTIMENT: CRITICAL (-0.8)
SENTIMENT TREND: Worsening (declined -0.4 over 48 hours)
ESCALATION RISK: HIGH (0.78)
RISK FACTORS:
- Customer used escalation language ("management", "escalate")
- Third contact about same issue (repeat contact indicator)
- SLA at 85% consumed with no resolution path identified
- Two reassignments in 48 hours
RECOMMENDED ACTIONS:
1. Immediate callback from team lead or manager
2. Provide clear timeline for resolution
3. Offer interim workaround if available
4. Document escalation handling in work notes
ステップ 8:傾向分析のために感情を一括分析する
複数のインシデントにわたる感情を分析し、パターンを検出します。
MCP を使用:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: active=true^assignment_group=[group_sys_id]
fields: sys_id,number,priority,state,assignment_group,sys_updated_on
limit: 100
指標を集計します:
| 指標 | 値 | ベンチマーク |
|---|---|---|
| 感情スコアの平均 | -0.22 | -0.10 |
| 否定的な感情を伴うインシデント | 34% | 20% |
| 深刻な感情を伴うインシデント | 8% | 3% |
| 感情から予測されたエスカレーション | 12 | -- |
| 実際のエスカレーション(検証済み) | 10 | -- |
| 予測精度 | 83% | -- |
ステップ 9:先回りアラートを設定する
感情に基づくアラートを自動化するためのしきい値を定義します。
MCP を使用:
Tool: SN-Update-Record
Parameters:
table_name: incident
sys_id: [incident_sys_id]
data:
work_notes: "SENTIMENT ALERT: Escalation risk score exceeded 0.7. Automated notification sent to incident manager. Customer sentiment has declined from neutral to critical over the last 3 interactions."
urgency: 1
ツールの使用
| ツール | 目的 | 使用するタイミング |
|---|---|---|
SN-Natural-Language-Search | 自然言語の条件でインシデントを検索する | 初期調査 |
SN-Query-Table | ジャーナルエントリ、メール、インシデントデータを取得する | 中核となるデータ収集 |
SN-Update-Record | リスクのあるインシデントにフラグを設定し、緊急度を更新する | 先回りした対応 |
SN-Add-Work-Notes | 感情分析の結果を記録する | レポートと監査証跡 |
SN-Get-Table-Schema | 感情データのテーブル構造を確認する | セットアップと調査 |
ベストプラクティス
- 両方のチャネルを分析する -- 作業メモはエージェントの視点を反映し、コメントは顧客の視点を反映します。どちらも重要です
- 最近のエントリを重視する -- 最新のやり取りが最も強いシグナルです
- 技術用語を考慮する -- 技術的な文脈(クリティカルなサーバー)での「クリティカル」と、感情的な文脈(サポートへの批判)での「クリティカル」は異なります
- 単発のスコアだけでなく推移を追跡する -- 以前は肯定的だった感情が中立に変化した場合、安定して中立の場合よりも懸念されます
- 構造化データと組み合わせる -- 感情だけでは不十分です。SLA のステータス、再割り当て回数、優先度と照合してください
- プライバシーを尊重する -- 感情分析はサービス品質に焦点を当て、個々の顧客のプロファイル作成を目的としないでください
- チームごとにしきい値を調整する -- サポートグループによって、感情の基準パターンが異なる場合があります
- 分析結果に基づいて行動する -- 介入を伴わない感情分析に価値はありません。アラートが実際の対応につながるようにしてください
トラブルシューティング
「インシデントのジャーナルエントリが見つかりません」
原因: 作業メモとコメントは sys_journal_field に保存され、インシデントの sys_id が element_id として使われます
解決策: クエリでインシデントレコードと一致させるために、sys_id ではなく element_id を使用していることを確認してください。また、ジャーナルエントリが存在することも確認してください。新しいインシデントには、まだエントリがない場合があります。
「感情スコアが不正確に見えます」
原因: 技術用語、略語、または特定の分野で使われる表現が、感情分析を混乱させることがあります 解決策: 分野固有のキーワード辞書を作成してください。「プロセスを強制終了する」や「セッションを終了する」といった用語は技術的な操作であり、否定的な感情ではありません。
「誤検知によるエスカレーションアラートが多すぎます」
原因: しきい値が敏感すぎるか、環境に合わせて調整されていません 解決策: 過去のエスカレーションデータを分析します。誤検知率が 15%を下回るまで、しきい値を段階的に引き上げます。アラートを出す前に、否定的な入力が複数回連続することを必須にする方法も検討してください。
「メールの body_text が HTML 形式です」
原因: メールが sys_email に HTML マークアップ付きで保存されています
解決策: 感情分析の前に HTML タグを削除します。body フィールドではなく body_text を使用するか、HTML からテキストへの変換を適用してください。
例
例 1:エスカレーションを早期に検出
インシデント: INC0056789 - 「マーケティング部門のメールサーバーが停止しています」
感情の推移:
- 0 時間:中立(0.0) - 「チームでメールが使えません」
- 4 時間:否定的(-0.4) - 「まだ更新がありません。キャンペーンの開始に影響しています」
- 8 時間:危機的(-0.8) - 「容認できません。直ちに CIO のオフィスに関与してもらう必要があります」
エスカレーションリスク: 0.82(重大) 対応: インシデントマネージャーが 15 分以内に顧客へ電話しました。対応の見通しと回避策を提示し、正式な経営層へのエスカレーションを未然に防ぎました。
例 2:良好な解決状況の追跡
インシデント: INC0056790 - 「VPN から共有ドライブにアクセスできません」
感情の推移:
- 0 時間:中立(0.0) - 「VPN に接続すると共有ドライブが表示されません」
- 2 時間:中立(0.1) - 「調査していただき、ありがとうございます」
- 3 時間:肯定的(0.6) - 「直りました。ドライブの割り当てが機能しています。ありがとうございます!」
エスカレーションリスク: 0.05(低) 対応: 介入は不要でした。顧客にとって良好な結果となり、インシデントは解決しました。
例 3:微妙な不満を検出
インシデント: INC0056791 - 「4 階のプリンターで印刷できません」
感情の推移:
- 1 日目:中立(0.0) - 「401 号室のプリンターで印刷できません」
- 3 日目:軽度の否定的(-0.2) - 「この件について確認です。まだ動いていません」
- 5 日目:否定的(-0.5) - 「この件で連絡するのはこれで 3 回目です。チームは 1 週間プリンターを使えない状態です」
エスカレーションリスク: 0.61(高) 対応: チームリーダーにアラートを送信しました。エージェントが顧客に電話し、代替プリンターを手配して、修理をエスカレーションしました。
関連スキル
itsm/incident-triage- 感情を考慮した優先順位付けによるトリアージitsm/suggested-steps- リスクのあるインシデントの解決手順を生成csm/sentiment-analysis- カスタマーサービス管理の感情分析hrsd/sentiment-analysis- HR ケースの感情分析itsm/major-incident- ステークホルダーとのコミュニケーションを含む重大インシデント管理