关于 csm-sentiment-analysis
面向 CSM 管理者和经理的客户情绪分析技能,用于汇总案例沟通、判断情绪趋势并识别升级风险。评估结合情绪线索、SLA 状态和案例历史。
主要功能
- 01汇总邮件、聊天和客户评论
- 02评估情绪倾向与强度
- 03跟踪案例周期中的情绪变化
- 04检测升级风险指标
- 05生成风险评分和分析报告
适用场景
- 01按客户情绪为案例安排优先级
- 02发现需要主动联系的高风险客户
- 03评估客户满意度趋势
- 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_case | GET | 案例详情和历史记录 |
/api/now/table/sys_journal_field | GET | 客户评论和工作记录 |
/api/now/table/sys_email | GET | 邮件沟通记录 |
/api/now/table/interaction | GET | 聊天和电话交互记录 |
/api/now/table/interaction_entry | GET | 聊天记录消息 |
/api/now/table/sn_customerservice_sla | GET | SLA 合规数据 |
/api/now/table/customer_account | GET | 账户等级和健康状况 |
/api/now/table/csm_consumer | GET | 消费者资料数据 |
最佳实践
- 分析所有沟通渠道: 客户在邮件、聊天和门户中的情绪可能有所不同;汇总所有渠道的信息,才能准确评估
- 提高近期沟通的权重: 与较早的沟通相比,最近一次互动更能反映当前情绪
- 结合上下文判断: 简短的信息可能只是中性,而非负面;务必结合完整的对话线程进行判断
- 跟踪情绪变化: 与持续走低的趋势相比,单条负面信息的风险较小
- 结合指标交叉分析: 将情绪分析与 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 报告与趋势分析