mcpField
I
incident-sentiment

incident-sentiment

github.com/happy-technologies-llcデータ・データベース4141 回インストール2 日前に更新
リポジトリ

incident-sentiment について

ServiceNowのインシデント対応チーム向けのスキルで、チケット上のやり取りの感情を分析し、エスカレーションリスクを見積もります。感情の推移にSLA期限の近さや再割り当て状況を組み合わせ、優先順位付けと早期対応を支援します。

主な機能

  1. 01作業メモ、コメント、メールの分析
  2. 02感情分類と推移の追跡
  3. 03インシデントのエスカレーションリスク算出
  4. 04感情を考慮した優先順位の提案
  5. 05一括傾向分析とアラート

活用シーン

  1. 01進行中インシデントのリスク監視
  2. 02顧客の不満を把握した早期対応
  3. 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感情データのテーブル構造を確認するセットアップと調査

ベストプラクティス

  1. 両方のチャネルを分析する -- 作業メモはエージェントの視点を反映し、コメントは顧客の視点を反映します。どちらも重要です
  2. 最近のエントリを重視する -- 最新のやり取りが最も強いシグナルです
  3. 技術用語を考慮する -- 技術的な文脈(クリティカルなサーバー)での「クリティカル」と、感情的な文脈(サポートへの批判)での「クリティカル」は異なります
  4. 単発のスコアだけでなく推移を追跡する -- 以前は肯定的だった感情が中立に変化した場合、安定して中立の場合よりも懸念されます
  5. 構造化データと組み合わせる -- 感情だけでは不十分です。SLA のステータス、再割り当て回数、優先度と照合してください
  6. プライバシーを尊重する -- 感情分析はサービス品質に焦点を当て、個々の顧客のプロファイル作成を目的としないでください
  7. チームごとにしきい値を調整する -- サポートグループによって、感情の基準パターンが異なる場合があります
  8. 分析結果に基づいて行動する -- 介入を伴わない感情分析に価値はありません。アラートが実際の対応につながるようにしてください

トラブルシューティング

「インシデントのジャーナルエントリが見つかりません」

原因: 作業メモとコメントは 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 - ステークホルダーとのコミュニケーションを含む重大インシデント管理

コメント