mcpField
C
csm-sentiment-analysis

csm-sentiment-analysis

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

csm-sentiment-analysis について

CSMの管理者やマネージャー向けに、ケースのやり取りを集約し、感情の推移やエスカレーションリスクを分析するスキルです。感情の兆候にSLA状況とケース履歴を組み合わせて評価します。

主な機能

  1. 01メール、チャット、顧客コメントの集約
  2. 02感情の極性と強度の評価
  3. 03ケース進行中の感情推移の追跡
  4. 04エスカレーションリスク指標の検出
  5. 05リスクスコアと分析レポートの生成

活用シーン

  1. 01顧客感情に基づくケースの優先順位付け
  2. 02早期対応が必要な顧客の特定
  3. 03顧客満足度の傾向確認
  4. 04顧客対応結果に基づくエージェント評価

MCP 対応

SN-Get-RecordやSN-Query-TableなどのMCPツールでケース、顧客とのやり取り、SLAデータ、履歴を取得し、感情分析に利用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill csm-sentiment-analysis

インストール後、Claude Code で/csm-sentiment-analysisを入力して読み込まれたか確認します。

詳細

感情分析

概要

このスキルでは、CSM のケースに関するコミュニケーションややり取り全体を対象に、顧客の感情を体系的に分析する方法を説明します。次のことに役立ちます。

  • 顧客向けのあらゆるコミュニケーション(メール、チャットの文字起こし、コメント、ポータルへの送信内容)を収集して分析する
  • 各コミュニケーションの感情の極性(ポジティブ、中立、ネガティブ)と強度を評価する
  • ケースのライフサイクル全体を通じて感情の推移を追跡し、傾向(改善、安定、悪化)を特定する
  • 繰り返しの問い合わせ、ネガティブな言葉のパターン、SLA 違反など、エスカレーションリスクの兆候を検出する
  • すぐに対応するか、先回りして連絡する必要がある、リスクの高いケースやアカウントにフラグを付ける
  • アカウント健全性ダッシュボードや管理レポート向けに感情スコアを提供する

使用するタイミング: CSM マネージャーが顧客満足度の傾向を評価するとき、優先順位を付けるためにケースをトリアージするとき、解約リスクのあるアカウントを特定するとき、または顧客の成果に基づいてエージェントのパフォーマンスを評価するときに使用します。

前提条件

  • 役割: sn_customerservice_agent、sn_customerservice_manager、または csm_admin
  • アクセス権: sn_customerservice_case、interaction、sys_journal_field、sys_email、customer_account、csm_consumer、sn_customerservice_sla テーブルへの読み取りアクセス
  • 知識: 感情分析の概念、CSM ケースのライフサイクル、組織のエスカレーションポリシーに関する理解

手順

ステップ 1:ケースと顧客のコンテキストを取得する

ケースレコードと顧客情報を取得し、基準となるコンテキストを把握します。

MCP の使用(Claude Code/Desktop):

Tool: SN-Get-Record
Parameters:
  table_name: sn_customerservice_case
  sys_id: [case_sys_id]
  fields: number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,opened_at,opened_by,resolved_at,closed_at,escalation,severity,reassignment_count,reopen_count,contact_type,sla_due
Tool: SN-Query-Table
Parameters:
  table_name: customer_account
  query: sys_id=[account_sys_id]
  fields: sys_id,name,customer_tier,industry,notes
  limit: 1

REST API の使用:

GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_fields=number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,opened_at,escalation,severity,reassignment_count,reopen_count,contact_type,sla_due&sysparm_display_value=true

GET /api/now/table/customer_account/{account_sys_id}?sysparm_fields=name,customer_tier,industry,notes&sysparm_display_value=true
ステップ 2:顧客のコメントとコミュニケーションを収集する

顧客向けのすべてのコメント(追加コメント/顧客に表示されるエントリ)を取得します。

MCP の使用:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=<case_sys_id>^element=comments^ORDERBYsys_created_on
  fields: sys_id,value,sys_created_on,sys_created_by,element
  limit: 100

REST API の使用:

GET /api/now/table/sys_journal_field?sysparm_query=element_id=<case_sys_id>^element=comments^ORDERBYsys_created_on&sysparm_fields=value,sys_created_on,sys_created_by,element&sysparm_limit=100
ステップ 3:メールでのコミュニケーションを取得する

感情分析のために、顧客からの受信メールを取得します。

MCP の使用:

Tool: SN-Query-Table
Parameters:
  table_name: sys_email
  query: instance=<case_sys_id>^type=received^ORDERBYsys_created_on
  fields: sys_id,subject,body_text,sys_created_on,sys_created_by,importance,type
  limit: 30

REST API の使用:

GET /api/now/table/sys_email?sysparm_query=instance=<case_sys_id>^type=received^ORDERBYsys_created_on&sysparm_fields=subject,body_text,sys_created_on,importance,type&sysparm_limit=30&sysparm_display_value=true
ステップ 4:チャットとやり取りの文字起こしを取得する

分析のために、チャットでのやり取りのエントリを取得します。

MCP の使用:

Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: parent=<case_sys_id>^ORDERBYsys_created_on
  fields: sys_id,number,channel,state,opened_at,closed_at,short_description
  limit: 20

チャットでのやり取りごとに、文字起こしを取得します。

Tool: SN-Query-Table
Parameters:
  table_name: interaction_entry
  query: interaction=<interaction_sys_id>^ORDERBYsys_created_on
  fields: sys_id,message,type,sys_created_on,sys_created_by,initiated_from
  limit: 100

REST API の使用:

GET /api/now/table/interaction?sysparm_query=parent=<case_sys_id>^ORDERBYsys_created_on&sysparm_fields=sys_id,number,channel,state,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=true

GET /api/now/table/interaction_entry?sysparm_query=interaction=<interaction_sys_id>^ORDERBYsys_created_on&sysparm_fields=message,type,sys_created_on,sys_created_by&sysparm_limit=100
ステップ 5:SLA の遵守状況とエスカレーション履歴を確認する

SLA 違反とエスカレーションは、感情を示す重要な指標です。

MCP の使用:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_sla
  query: task=<case_sys_id>
  fields: sys_id,sla,stage,has_breached,planned_end_time,percentage,business_percentage,start_time,end_time
  limit: 10

REST API の使用:

GET /api/now/table/sn_customerservice_sla?sysparm_query=task=<case_sys_id>&sysparm_fields=sla,stage,has_breached,planned_end_time,percentage,business_percentage&sysparm_limit=10&sysparm_display_value=true
ステップ 6:顧客のケース履歴を分析してパターンを確認する

複数のケースにわたり、顧客にネガティブな体験が繰り返されていないかを確認します。

MCP の使用:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: consumer=[consumer_sys_id]^ORDERBYDESCopened_at
  fields: number,short_description,state,priority,escalation,reopen_count,reassignment_count,opened_at,closed_at,resolution_code
  limit: 20

REST API の使用:

GET /api/now/table/sn_customerservice_case?sysparm_query=consumer=<consumer_sys_id>^ORDERBYDESCopened_at&sysparm_fields=number,short_description,state,priority,escalation,reopen_count,reassignment_count,opened_at,closed_at,resolution_code&sysparm_limit=20&sysparm_display_value=true
ステップ 7:感情分析を実施してレポートを作成する

収集したすべてのコミュニケーションを分析し、感情を示す指標を特定して、構造化された評価を作成します。

感情を示すキーワード:

ネガティブな指標中立的な指標ポジティブな指標
frustrated, unacceptablefollowing up, checking inthank you, appreciate
disappointed, angryany update, statusexcellent, great job
escalate, managerwhen will, timelineresolved, working now
unresolved, still brokencan you confirmhelpful, impressed
worst, terrible, awfulneed more inforecommend, satisfied
cancel, legal, lawsuitplease adviseabove and beyond
wasting my timelooking forwardquick response
incompetent, uselessper our discussionkeep up the good work

リスク要因のスコアリング:

要因スコア条件
SLA 違反+3いずれかの SLA が違反状態
エスカレーション中+2エスカレーションレベル > 0
再オープン回数 > 0+2ケースが再オープンされている
再割り当て回数 > 3+1複数チームへの引き継ぎ
ネガティブなメールのトーン+2検出されたネガティブなメールごと
優先度が高い(P1/P2)+1優先度が 1 または 2
複数のケースがオープン+1顧客のオープン中のケースが > 2
ケースの経過日数 > 7 日+1ケースが想定より長くオープンしている

リスクレベル:

  • スコア 0-2:低リスク(緑)
  • スコア 3-5:中リスク(黄)
  • スコア 6-8:高リスク(オレンジ)
  • スコア 9 以上:重大なリスク(赤)

出力レポート:

=== SENTIMENT ANALYSIS REPORT ===
Case: [number] | Customer: [name] | Account: [account_name]
Account Tier: [tier] | Case Age: [days] days
Analysis Date: [current_date]

OVERALL SENTIMENT: [Positive/Neutral/Negative]
RISK SCORE: [score]/15 ([Low/Medium/High/Critical])
TREND: [Improving/Stable/Deteriorating]

COMMUNICATION SENTIMENT TIMELINE:
Date       | Channel | Sentiment | Key Indicators
-----------+---------+-----------+------------------
[date_1]   | Email   | Negative  | "frustrated", "unacceptable"
[date_2]   | Chat    | Negative  | "still not working", "escalate"
[date_3]   | Email   | Neutral   | "any update on timeline"
[date_4]   | Comment | Positive  | "thank you for the update"

SENTIMENT PROGRESSION:
[date_1] ████████░░ Negative (-0.7)
[date_2] ███████░░░ Negative (-0.6)
[date_3] █████░░░░░ Neutral  (-0.1)
[date_4] ███░░░░░░░ Positive (+0.4)
Trend: IMPROVING ↑

RISK FACTORS:
[✓] SLA Breached (Response SLA) .............. +3
[✓] Escalation Level 1 ...................... +2
[✗] Case Reopened ............................ +0
[✓] Reassignment Count: 4 ................... +1
[✓] Negative Communications: 2 .............. +4
[✗] High Priority ............................ +0
[✗] Multiple Open Cases ..................... +0
[✓] Case Age: 12 days ....................... +1
                                    Total: 11 (CRITICAL)

ACCOUNT HEALTH INDICATORS:
- Total Cases (90 days): [count]
- Open Cases: [count]
- Average Resolution Time: [days]
- Escalation Rate: [percentage]%
- Reopen Rate: [percentage]%

KEY OBSERVATIONS:
1. [observation about sentiment trend]
2. [observation about risk factors]
3. [observation about account health]

RECOMMENDED ACTIONS:
1. [action based on sentiment analysis]
2. [action based on risk score]
3. [action based on account health]

ツールの使用方法

MCP ツールのリファレンス
ツール使用する場面
SN-Natural-Language-Search感情に関するキーワードや説明でケースを検索する
SN-Query-Tableコミュニケーション、ケース履歴、SLA データを取得する
SN-Get-Record個別のケースまたはアカウントのレコードを取得する
REST API リファレンス
エンドポイントメソッド目的
/api/now/table/sn_customerservice_caseGETケースの詳細と履歴
/api/now/table/sys_journal_fieldGET顧客のコメントと作業メモ
/api/now/table/sys_emailGETメールでのコミュニケーション
/api/now/table/interactionGETチャットと電話でのやり取り
/api/now/table/interaction_entryGETチャットのトランスクリプトメッセージ
/api/now/table/sn_customerservice_slaGETSLA の遵守データ
/api/now/table/customer_accountGETアカウントのティアと健全性
/api/now/table/csm_consumerGET消費者のプロフィールデータ

ベストプラクティス

  • すべてのチャネルを分析する: 顧客の感情はメール、チャット、ポータルによって異なる場合があります。正確に把握するため、すべてのチャネルを集約してください
  • 最近のコミュニケーションを重視する: 最も最近のやり取りは、古いものより現在の感情を示す傾向があります
  • 文脈を考慮する: 簡潔なメッセージはネガティブではなく中立的な場合があります。必ず会話スレッド全体を考慮してください
  • 感情の推移を追跡する: 1 件のネガティブなメッセージよりも、継続的な下降傾向のほうが懸念されます
  • 指標と照合する: 感情分析と SLA データ、再割り当て回数、再オープン回数を組み合わせて、全体像を把握してください
  • アカウントレベルで集約する: 個々のケースの感情を集約し、アカウントレベルの健全性スコアに反映してください
  • 先回りしてフラグを立てる: 明示的なエスカレーション依頼を待たず、顧客がエスカレーションする前に感情が悪化しているケースにフラグを立ててください
  • 文化の違いを尊重する: トーンや率直さは文化によって異なります。率直なコミュニケーションスタイルを誤検知しないようにしてください
  • 分析結果を記録する: チーム内で共有できるよう、感情分析の結果を作業メモとして記録してください

トラブルシューティング

「顧客コメントが見つかりません」

原因: ケースで作業メモのみが使用されているか、コメントが別のフィールドに保存されている可能性があります。 解決策: sys_journal_field で element=comments と element=work_notes の両方を確認します。また、顧客とのやり取りについては sys_email も確認します。組織によっては、カスタムのジャーナルフィールドを使用している場合があります。

「チャットのトランスクリプトが空です」

原因: メッセージングフレームワークによっては、チャットメッセージが別のテーブルに格納されている場合があります。 解決策: live_message テーブルに対してクエリを試します:sysparm_query=group=<interaction_sys_id>。Customer Service Messaging(CSM)のチャットについては、sys_cs_message も確認します。

「センチメント分析の精度が低いようです」

原因: 自動キーワードベースの分析では、皮肉や文脈、ドメイン固有の表現を見落とすことがあります。 解決策: キーワード検出を文脈分析で補います。個々のメッセージではなく、会話スレッド全体を確認します。意図を明確にするフォローアップメッセージがないか確認します。

「アカウントの健全性データが不完全です」

原因: 過去のケースがアーカイブされているか、コンシューマーレコードからすべてのケースにリンクされていない可能性があります。 解決策: 関連するすべてのケースを取得するため、consumer フィールドと account フィールドの両方でケースをクエリします。一部のケースは csm_consumer ではなく customer_contact にリンクされていることがあるため、contact フィールドも確認します。

例

例 1:単一ケースのセンチメント分析

シナリオ: 10 日間未解決の請求に関する異議申し立てケースのセンチメントを分析します。

ステップ 1 - ケースを取得:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: number=CS0090100
  fields: sys_id,number,short_description,state,priority,escalation,contact,account,consumer,opened_at,reopen_count,reassignment_count,sla_due
  limit: 1

ステップ 2 - 顧客のメールを取得:

Tool: SN-Query-Table
Parameters:
  table_name: sys_email
  query: instance=<sys_id>^type=received^ORDERBYsys_created_on
  fields: body_text,sys_created_on,subject
  limit: 20

ステップ 3 - SLA を確認:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_sla
  query: task=<sys_id>
  fields: sla,stage,has_breached,percentage
  limit: 5

出力:

SENTIMENT ANALYSIS - CS0090100 (Billing Dispute)
Customer: Robert Chen | Account: Meridian Inc. (Gold)

OVERALL SENTIMENT: Negative (deteriorating)
RISK SCORE: 9/15 (CRITICAL)

TIMELINE:
Mar 09 | Email | Neutral  | "I noticed an incorrect charge..."
Mar 12 | Email | Negative | "I haven't heard back, this is urgent"
Mar 15 | Email | Negative | "This is unacceptable, 6 days with no response"
Mar 18 | Email | Negative | "I'm considering escalating to management"

RISK FACTORS: SLA Breached (+3), Negative emails x3 (+6)
TREND: Deteriorating ↓

RECOMMENDED ACTIONS:
1. Immediate manager outreach call to Robert Chen
2. Fast-track billing adjustment with finance team
3. Provide concession or credit for service failure
例 2:アカウントレベルのセンチメントダッシュボード

シナリオ: 重要なアカウントに属するすべてのオープンケースについて、センチメントの概要を生成します。

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: account=[account_sys_id]^stateNOT IN6,7,8^ORDERBYpriority
  fields: sys_id,number,short_description,state,priority,escalation,contact,opened_at,reopen_count,reassignment_count
  limit: 50

出力:

ACCOUNT SENTIMENT DASHBOARD - GLOBEX CORPORATION
Tier: Platinum | Open Cases: 7 | Avg Age: 8.3 days

CASE SENTIMENT SUMMARY:
Case       | Priority | Age  | Sentiment | Risk
-----------+----------+------+-----------+--------
CS0089001  | P1       | 3d   | Negative  | HIGH
CS0089234  | P2       | 5d   | Neutral   | MEDIUM
CS0089500  | P2       | 12d  | Negative  | CRITICAL
CS0089801  | P3       | 7d   | Neutral   | LOW
CS0090010  | P3       | 2d   | Positive  | LOW
CS0090150  | P3       | 14d  | Negative  | HIGH
CS0090200  | P4       | 1d   | Neutral   | LOW

ACCOUNT HEALTH: AT RISK
- 3 of 7 cases have negative sentiment
- 1 case in critical risk state
- Escalation rate: 28% (above 15% threshold)

RECOMMENDED: Schedule account review with CSM manager

関連スキル

  • csm/case-summarization - センチメントの文脈を把握するためにケースの詳細を要約します
  • csm/chat-recommendation - センチメントに基づいてチャットの応答トーンを調整します
  • csm/email-recommendation - センチメント分析の結果に基づいてメールのトーンを調整します
  • csm/activity-response - センチメントを考慮したアクティビティ応答を生成します
  • reporting/survey-analysis - CSAT のレポートと傾向分析

コメント