关于 chat-summarization-va
此技能为 Virtual Agent 会话生成结构化摘要,供接手会话的坐席、管理人员和审计分析使用。摘要涵盖主题、意图、解决状态、已收集信息及交接所需上下文,也支持批量趋势分析。
主要功能
- 01提取会话关键信息
- 02分类主题、意图与结果
- 03判断解决或升级状态
- 04整理坐席接手所需上下文
- 05批量汇总会话趋势
适用场景
- 01为升级会话准备坐席交接
- 02分析会话主题与处理结果
- 03建立虚拟 Agent 会话审计记录
MCP 相关
该技能使用 MCP 工具读取 Virtual Agent 会话、消息和上下文,并可将摘要写入会话记录或工作备注。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill chat-summarization-va安装后在 Claude Code 中输入/chat-summarization-va确认已加载。
详细介绍
聊天摘要 - 虚拟 Agent
概述
此技能可生成简洁、结构化的虚拟 Agent 聊天会话摘要,从而提升 Agent 交接质量、支持趋势分析并创建审计跟踪记录。每份摘要都包含主题分类、解决状态、已收集的数据和交接上下文。
- 从虚拟 Agent 对话记录中提取关键信息
- 按主题、意图和结果对对话进行分类
- 确定解决状态:自助解决、已升级、已放弃或未解决
- 构建交接上下文包,实现实时 Agent 无缝接手
- 识别已收集的槽位和缺失信息,以便后续跟进
- 生成批量摘要,用于趋势报告和质量分析
适用场景: 实时 Agent 需要快速了解已升级的聊天上下文、管理人员需要对话分析数据,或需要为虚拟 Agent 交互建立审计跟踪记录时。
前提条件
- 角色:
admin、va_admin、itil或conversation_designer - 插件:
com.glide.cs.chatbot(Virtual Agent)、com.glide.interaction(Agent Workspace) - 访问权限: 对
sys_cs_conversation、sys_cs_message、sys_cs_topic、sys_cb_topic、sys_cb_action、sys_cs_context_entry具有读取权限 - 知识: 熟悉 Virtual Agent 主题目录和升级路径
- 数据: 已启用虚拟 Agent 部署,并有对话历史记录
操作步骤
步骤 1:选择要汇总的对话
按状态、日期范围或主题查询对话。
使用 MCP(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_conversation
query: sys_created_onONLast 24 hours@javascript:gs.daysAgoStart(1)@javascript:gs.daysAgoEnd(0)
fields: sys_id,number,topic,state,channel,opened_at,closed_at,close_reason,user,queue_time,handle_time,assigned_to
limit: 50
使用 REST API:
GET /api/now/table/sys_cs_conversation?sysparm_query=sys_created_onONLast 24 hours@javascript:gs.daysAgoStart(1)@javascript:gs.daysAgoEnd(0)&sysparm_fields=sys_id,number,topic,state,channel,opened_at,closed_at,close_reason,user,queue_time,handle_time,assigned_to&sysparm_limit=50
仅查询已升级的对话:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_conversation
query: close_reason=escalated^sys_created_onONLast 24 hours@javascript:gs.daysAgoStart(1)@javascript:gs.daysAgoEnd(0)
fields: sys_id,number,topic,state,channel,opened_at,closed_at,close_reason,user
limit: 50
步骤 2:获取完整的消息历史记录
按时间顺序获取该对话的所有消息。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_message
query: conversation=[conversation_sys_id]^ORDERBYsys_created_on
fields: sys_id,body,type,sender_type,sys_created_on,is_hidden,formatted_body
limit: 200
使用 REST API:
GET /api/now/table/sys_cs_message?sysparm_query=conversation=[conversation_sys_id]^ORDERBYsys_created_on&sysparm_fields=sys_id,body,type,sender_type,sys_created_on,is_hidden,formatted_body&sysparm_limit=200
步骤 3:提取上下文和已收集的数据
获取对话期间收集的所有上下文条目(槽位值)。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_context_entry
query: conversation=[conversation_sys_id]
fields: sys_id,name,value,source
limit: 50
使用 REST API:
GET /api/now/table/sys_cs_context_entry?sysparm_query=conversation=[conversation_sys_id]&sysparm_fields=sys_id,name,value,source&sysparm_limit=50
步骤 4:识别主题和意图
将对话映射到预设主题,并确定用户意图。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cb_topic
query: sys_id=[topic_sys_id]
fields: sys_id,name,description,goal,category
limit: 1
使用 REST API:
GET /api/now/table/sys_cb_topic?sysparm_query=sys_id=[topic_sys_id]&sysparm_fields=sys_id,name,description,goal,category&sysparm_limit=1
对话结果分类:
| 结果 | 标准 | 代码 |
|---|---|---|
| 自助解决 | 机器人在未升级的情况下解决了用户问题 | SS |
| 已升级 - 用户请求 | 用户明确要求转接实时 Agent | ER |
| 已升级 - 自动升级 | 机器人无法处理请求,自动升级了对话 | EA |
| 已放弃 | 用户在问题解决前离开对话 | AB |
| 未解决 | 对话结束,但未明确解决问题 | UR |
步骤 5:生成摘要
使用以下模板构建结构化摘要:
=== CHAT SESSION SUMMARY ===
Conversation: [number]
Date: [opened_at] - [closed_at]
Duration: [handle_time]
Channel: [channel]
User: [user display_value]
TOPIC & INTENT:
Topic: [topic name]
Primary Intent: [extracted user intent]
Secondary Intents: [any topic switches during conversation]
CONVERSATION FLOW:
1. [User initiated with: brief description of first message]
2. [Bot identified topic: topic name]
3. [Data collection: list of slots captured]
4. [Resolution attempt: what the bot tried]
5. [Outcome: resolution or escalation point]
CAPTURED DATA:
- [slot_name]: [value]
- [slot_name]: [value]
- [slot_name]: [value]
MISSING DATA:
- [required slot not captured]
RESOLUTION STATUS: [Self-Served | Escalated | Abandoned | Unresolved]
RESOLUTION DETAIL: [Brief description of how it was resolved or why it was not]
HANDOFF CONTEXT (if escalated):
Issue: [concise problem statement]
What was tried: [bot actions taken]
What is needed: [next steps for live agent]
Sentiment: [user sentiment at handoff point]
KEY QUOTES:
- User: "[most relevant user statement]"
- User: "[any frustration or clarification]"
步骤 6:检查相关记录
查找由此对话创建的事件、请求或交互记录。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: conversation=[conversation_sys_id]
fields: sys_id,number,type,state,assigned_to,opened_at
limit: 5
使用 REST API:
GET /api/now/table/interaction?sysparm_query=conversation=[conversation_sys_id]&sysparm_fields=sys_id,number,type,state,assigned_to,opened_at&sysparm_limit=5
步骤 7:保存摘要
将摘要写入对话记录或相关工作备注。
使用 MCP:
Tool: SN-Update-Record
Parameters:
table_name: sys_cs_conversation
sys_id: [conversation_sys_id]
data:
work_notes: "[generated summary]"
使用 REST API:
PATCH /api/now/table/sys_cs_conversation/{sys_id}
Content-Type: application/json
{
"work_notes": "[generated summary]"
}
步骤 8:生成批量分析
汇总多个对话中的模式,以供报告使用:
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_conversation
query: sys_created_onONLast 7 days@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)
fields: sys_id,topic,close_reason,handle_time,queue_time
limit: 500
生成汇总指标:
| 指标 | 数值 | 趋势 |
|---|---|---|
| 对话总数 | 487 | 环比增长 12% |
| 自助服务率 | 62% | 环比增长 3% |
| 升级率 | 24% | 环比下降 2% |
| 放弃率 | 14% | 环比下降 1% |
| 平均处理时间 | 4.2 分钟 | 环比减少 0.3 分钟 |
| 最常见的升级主题 | VPN 问题 | 升级 31 次 |
工具使用
| 工具 | 用途 | 使用时机 |
|---|---|---|
SN-Query-Table | 检索对话、消息、上下文和主题 | 核心数据收集 |
SN-Natural-Language-Search | 根据自然语言条件查找对话 | 临时调查 |
SN-Update-Record | 在对话记录中保存摘要 | 持久化结果 |
SN-Add-Work-Notes | 将摘要记为工作备注 | 审计追踪 |
SN-Get-Table-Schema | 查看对话表结构 | 设置和探索 |
最佳实践
- 升级时立即生成摘要 -- 对话升级时立即生成摘要,以便快速交接给 Agent
- 保持摘要简洁 -- 尽量控制在 10-15 行以内;Agent 需要快速了解上下文,而非查看完整对话记录
- 标出缺失数据 -- 明确指出未收集到的必填项,让 Agent 知道需要询问什么
- 包含用户情绪 -- 记录用户的沮丧、紧迫感或困惑,帮助 Agent 调整应对方式
- 排除隐藏消息 -- 过滤掉
is_hidden=true的消息,因为其中包含系统内部数据 - 每日批量生成摘要 -- 运行汇总摘要,用于趋势报告和主题优化
- 保留原始对话记录 -- 摘要用于补充,但绝不能替代完整的消息历史
- 统一标记摘要 -- 使用标准结果代码(SS、ER、EA、AB、UR),确保分析可靠
故障排除
“对话没有消息”
原因: 用户已连接,但从未发送消息;或者消息存储在关联表中
解决方案: 使用对话 sys_id 检查 sys_cs_message。如果为空,则归类为已放弃,并注明“未记录用户消息”。
“对话的主题字段为空”
原因: 用户在匹配到意图之前断开连接,或者对话使用了后备流程
解决方案: 尝试根据用户最初几条消息推断主题。如果无法识别主题,则归类为“未匹配意图”。
“上下文条目与预期字段不匹配”
原因: 对话发生后主题设计已更新,或者字段以不同名称记录
解决方案: 对照对话发生时生效的主题版本进行核查。使用 sys_cs_context_entry.source 追踪字段来源。
“摘要对于 work_notes 字段来说过长”
原因: 对话轮次较多,摘要超出字段长度限制
解决方案: 精简为关键部分:主题、解决状态、交接上下文。如有需要,将完整摘要作为附件保存。
示例
示例 1:自助重置密码
对话: CS0089001 - 6 轮,2.1 分钟
摘要:
Topic: Password Reset | Status: SELF-SERVED
User requested password reset for corporate account. Bot verified identity
via security questions (3/3 correct), sent reset link to registered email.
User confirmed receipt and successful reset.
Captured: username=jsmith, [email protected], verification=passed
No missing data. No escalation needed.
示例 2:升级处理软件安装
对话: CS0089002 - 14 轮,8.3 分钟
摘要:
Topic: Software Request | Status: ESCALATED (User Requested)
User requested installation of Adobe Creative Suite. Bot collected
justification and manager approval details but user asked for live agent
after bot could not confirm license availability.
Captured: software=Adobe Creative Suite, justification=marketing deliverables,
manager=Jane Doe
Missing: cost_center, license_type
Handoff Context: User needs license availability check. Sentiment: mildly frustrated.
示例 3:已放弃的人力资源咨询
对话: CS0089003 - 3 轮,0.8 分钟
摘要:
Topic: PTO Balance | Status: ABANDONED
User asked about remaining PTO balance. Bot requested employee ID for
lookup. User did not respond after 5 minutes. Session timed out.
Captured: none
Missing: employee_id
No handoff context. Recommend: add PTO lookup via SSO identity.
相关技能
genai/conversation-evaluator- 在生成摘要前评估对话质量csm/chat-recommendation- 在实时聊天中推荐回复itsm/incident-triage- 对从升级对话中创建的事件进行分流genai/now-assist-qa- 对 AI 辅助对话进行质量保证knowledge/content-recommendation- 查找对话中引用的 KB 文章