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 经理需要评估客户满意度趋势、确定案例优先级、识别有流失风险的客户账户,或根据客户结果评估 Agent 表现时。

前提条件

  • 角色: 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(沮丧)、unacceptable(不可接受)following up(跟进中)、checking in(询问进展)thank you(谢谢)、appreciate(感激)
disappointed(失望)、angry(愤怒)any update(有进展吗)、status(状态)excellent(出色)、great job(做得很好)
escalate(升级)、manager(经理)when will(何时)、timeline(时间表)resolved(已解决)、working now(现在已正常运行)
unresolved(未解决)、still broken(仍然故障)can you confirm(能否确认)helpful(有帮助)、impressed(印象深刻)
worst(最糟糕)、terrible(糟糕)、awful(很差)need more info(需要更多信息)recommend(推荐)、satisfied(满意)
cancel(取消)、legal(法律)、lawsuit(诉讼)please advise(请提供建议)above and beyond(超出预期)
wasting my time(浪费我的时间)looking forward(期待)quick response(快速回复)
incompetent(不称职)、useless(没用)per our discussion(根据我们的讨论)keep 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消费者资料数据

最佳实践

  • 分析所有沟通渠道: 客户在邮件、聊天和门户中的情绪可能有所不同;汇总所有渠道的信息,才能准确评估
  • 提高近期沟通的权重: 与较早的沟通相比,最近一次互动更能反映当前情绪
  • 结合上下文判断: 简短的信息可能只是中性,而非负面;务必结合完整的对话线程进行判断
  • 跟踪情绪变化: 与持续走低的趋势相比,单条负面信息的风险较小
  • 结合指标交叉分析: 将情绪分析与 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 字段查询案例,以涵盖所有相关案例。还要检查 contact 字段,因为有些案例可能关联的是 customer_contact,而不是 csm_consumer。

示例

示例 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 报告与趋势分析

评论

支持 Markdown