mcpField
C
chat-recommendation

chat-recommendation

github.com/happy-technologies-llc其他4141 次安装2 天前更新
代码仓库

关于 chat-recommendation

面向 ServiceNow CSM 客服人员的技能,在实时聊天中汇集案例、客户历史、知识文章和已解决案例,生成可供客服选用的回复建议。

主要功能

  1. 01分析案例与聊天上下文
  2. 02检索客户资料和历史案例
  3. 03搜索知识文章与相似解决方案
  4. 04生成多种个性化回复建议

适用场景

  1. 01实时聊天时快速拟定回复
  2. 02依据客户等级调整沟通语气
  3. 03培训新客服或制作回复模板

MCP 相关

通过 SN-Get-Record、SN-Query-Table 等 MCP 工具读取 ServiceNow 案例、客户、知识文章和聊天记录,并据此生成回复建议。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill chat-recommendation

安装后在 Claude Code 中输入/chat-recommendation确认已加载。

详细介绍

聊天回复推荐

概述

此技能会在实时聊天期间,为客户服务管理(CSM)Agent 生成理解上下文的聊天回复建议。它可以帮助你:

  • 分析当前案例的上下文,包括类别、产品和客户等级
  • 搜索知识库,查找与客户问题相关的文章
  • 查看类似的已解决案例,参考经过验证的回复模式和解决方案
  • 获取客户历史记录,让建议更个性化
  • 为 Agent 生成专业、共情且准确的聊天回复

适用场景: CSM Agent 处理实时聊天或消息互动,需要快速获得符合上下文的回复建议时。也适用于培训新 Agent 或创建回复模板。

前提条件

  • 角色: sn_customerservice_agent、sn_customerservice_manager 或 csm_admin
  • 访问权限: 对 sn_customerservice_case、interaction、kb_knowledge、sys_journal_field、customer_account 和 csm_consumer 表具有读取权限
  • 知识: 熟悉组织的 CSM 知识库结构和聊天互动工作流
  • 配置: 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,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,contact_type,resolution_code,escalation

获取活动聊天互动:

Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: parent=<case_sys_id>^channel=chat^state=2^ORDERBYDESCopened_at
  fields: sys_id,number,channel,state,opened_at,short_description,assigned_to,direction
  limit: 1

使用 REST API:

GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_fields=number,short_description,description,state,priority,category,subcategory,contact,account,consumer,product,assigned_to,assignment_group,opened_at,contact_type,escalation&sysparm_display_value=true

GET /api/now/table/interaction?sysparm_query=parent=<case_sys_id>^channel=chat^state=2^ORDERBYDESCopened_at&sysparm_fields=sys_id,number,channel,state,opened_at,short_description,assigned_to&sysparm_limit=1&sysparm_display_value=true
第 2 步:获取客户历史记录和账户上下文

了解客户的历史记录、等级和过往互动,以提供个性化回复。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: customer_account
  query: sys_id=[account_sys_id]
  fields: sys_id,name,number,customer_tier,industry,notes,phone,account_code
  limit: 1
Tool: SN-Query-Table
Parameters:
  table_name: csm_consumer
  query: sys_id=[consumer_sys_id]
  fields: sys_id,name,email,phone,title,preferred_language,timezone
  limit: 1

获取客户近期的案例历史记录:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: consumer=[consumer_sys_id]^sys_id!=<current_case_sys_id>^ORDERBYDESCopened_at
  fields: number,short_description,state,category,resolution_code,resolution_notes,opened_at,closed_at
  limit: 5

使用 REST API:

GET /api/now/table/customer_account/{account_sys_id}?sysparm_fields=name,number,customer_tier,industry,notes&sysparm_display_value=true

GET /api/now/table/csm_consumer/{consumer_sys_id}?sysparm_fields=name,email,phone,preferred_language,timezone&sysparm_display_value=true

GET /api/now/table/sn_customerservice_case?sysparm_query=consumer=<consumer_sys_id>^sys_id!=<current_case_sys_id>^ORDERBYDESCopened_at&sysparm_fields=number,short_description,state,category,resolution_code,resolution_notes&sysparm_limit=5&sysparm_display_value=true
第 3 步:搜索知识库中的相关文章

使用案例关键词、类别和产品查询知识库,查找适用的解决方案。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  query: workflow_state=published^kb_category.label=[case_category]^textLIKE[key_terms]^ORshort_descriptionLIKE[key_terms]
  table_name: kb_knowledge
  limit: 5

对于结构化查询:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: workflow_state=published^kb_category.label=[case_category]^textLIKE[key_terms]^ORshort_descriptionLIKE[key_terms]
  fields: sys_id,number,short_description,text,kb_category,author,sys_updated_on,rating
  limit: 5

使用 REST API:

GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKE<key_terms>^ORtextLIKE<key_terms>&sysparm_fields=sys_id,number,short_description,text,kb_category,rating&sysparm_limit=5&sysparm_display_value=true
第 4 步:查找类似的已解决案例

搜索具有类似特征的已解决案例,参考经过验证的解决方案。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: category=[case_category]^subcategory=[case_subcategory]^stateIN6,7^resolution_codeISNOTEMPTY^ORDERBYDESCclosed_at
  fields: number,short_description,resolution_code,resolution_notes,category,subcategory,product,closed_at
  limit: 5

使用编码查询进行更广泛的匹配:

Tool: SN-Query-Table
Parameters:
  query: short_descriptionLIKE[key_terms]^stateIN6,7^resolution_codeISNOTEMPTY^ORDERBYDESCclosed_at
  table_name: sn_customerservice_case
  limit: 5

使用 REST API:

GET /api/now/table/sn_customerservice_case?sysparm_query=category=<category>^subcategory=<subcategory>^stateIN6,7^resolution_codeISNOTEMPTY^ORDERBYDESCclosed_at&sysparm_fields=number,short_description,resolution_code,resolution_notes,product&sysparm_limit=5&sysparm_display_value=true
第 5 步:获取近期聊天消息

提取近期对话消息,以了解当前对话进展并避免重复提问。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=<case_sys_id>^element=comments^ORDERBYDESCsys_created_on
  fields: value,sys_created_on,sys_created_by
  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
  limit: 50

使用 REST API:

GET /api/now/table/sys_journal_field?sysparm_query=element_id=<case_sys_id>^element=comments^ORDERBYDESCsys_created_on&sysparm_fields=value,sys_created_on,sys_created_by&sysparm_limit=20

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=50
第 6 步:生成聊天回复建议

根据收集到的所有上下文,整理推荐回复。按场景组织建议:

=== CHAT RESPONSE RECOMMENDATIONS ===
Case: [number] | Customer: [name] | Tier: [tier]
Category: [category] / [subcategory] | Product: [product]

CUSTOMER CONTEXT:
- Account Tier: [tier] (adjust formality accordingly)
- Previous Cases: [count] ([resolved_count] resolved)
- Preferred Language: [language]
- Known Issue: [yes/no - if matches known KB article]

RECOMMENDED GREETING:
"Hello [contact_name], thank you for reaching out. I can see you're
contacting us about [short_description]. I'm here to help you with that."

RECOMMENDED RESPONSE (Based on KB Article [kb_number]):
"I understand you're experiencing [issue_description]. Based on our
documentation, here are the steps to resolve this:
1. [step_1 from KB article]
2. [step_2 from KB article]
3. [step_3 from KB article]
Would you like me to walk you through these steps?"

ALTERNATIVE RESPONSE (Based on Similar Case [case_number]):
"I've seen similar cases where [resolution_summary]. Let me check
if the same solution applies to your situation. Could you confirm
[clarifying_question]?"

ESCALATION RESPONSE (if needed):
"I want to make sure this gets the attention it deserves. I'm going
to bring in a specialist from our [team_name] team who can provide
more detailed assistance. Please hold for just a moment."

CLOSING RESPONSE:
"Is there anything else I can help you with today? If this issue
comes up again, you can reference KB article [kb_number] in our
support portal for quick self-service."

工具用法

MCP 工具参考
工具适用场景
SN-Natural-Language-Search使用自然语言搜索知识库文章和类似案例
SN-Query-Table对案例历史记录、互动和知识库文章进行结构化查询
SN-Get-Record通过 sys_id 获取单个案例或互动记录
REST API 参考
端点方法用途
/api/now/table/sn_customerservice_caseGET查询当前案例和历史案例
/api/now/table/interactionGET获取聊天互动详情
/api/now/table/interaction_entryGET提取聊天记录消息
/api/now/table/kb_knowledgeGET搜索知识库文章
/api/now/table/sys_journal_fieldGET获取评论和工作备注
/api/now/table/customer_accountGET获取客户账户和等级信息
/api/now/table/csm_consumerGET获取消费者档案和偏好

最佳实践

  • 根据客户层级匹配语气: 对 Premium/Gold 层级的客户,应提供更个性化、正式的回复;相应地调整措辞
  • 引用具体的知识库文章: 始终注明知识库文章编号,以便客服人员与客户分享链接
  • 避免使用术语: 建议应使用客户易于理解的语言;技术细节仅用于内部工作备注
  • 回应重复联系的客户: 如果客户之前就同一主题提交过案例,应承认此前的联系记录,并为问题反复出现致歉
  • 建议自助服务选项: 适当时,向客户推荐门户资源,以便日后处理类似问题
  • 保持消息简洁: 聊天回复最多应为 2-4 句话;较长的说明应拆分为多条消息
  • 提供多个选项: 提供 2-3 种回复版本,供客服人员选择最合适的一种
  • 称呼客户姓名: 在问候和回复中始终使用客户的名字,以体现个性化

故障排查

“未找到知识库文章”

原因: 知识库中可能没有与案例类别或产品匹配的文章 解决方案: 仅使用简短描述中的关键词,扩大编码后的 SN-Query-Table 搜索范围。同时,使用 kb_knowledge_baseLIKE[name] 检查其他知识库中是否存在相关文章。

“未找到类似的已解决案例”

原因: 该类别或子类别可能没有足够的已解决案例记录 解决方案: 移除子类别筛选条件,以扩大查询范围。尝试仅按产品匹配,或使用 short_descriptionLIKE[key_terms],而不是精确匹配类别。

“聊天记录为空”

原因: 交互记录可能使用了不同的表,或者聊天尚未开始 解决方案: 尝试查询 live_message 表:sysparm_query=group=<interaction_sys_id>^ORDERBYsys_created_on。同时确认交互状态为活动状态(state=2)。

“客户历史记录未加载”

原因: 消费者的 sys_id 可能与联系人的 sys_id 不同 解决方案: 先查询 customer_contact 以获取消费者引用,然后用它查询案例历史记录。案例中的 consumer 字段关联到 csm_consumer,而 contact 字段关联到 customer_contact。

示例

示例 1:关于产品退货的聊天回复建议

场景: 客户发起聊天,询问如何退回有缺陷的产品。

步骤 1 - 获取案例:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: number=CS0078901
  fields: sys_id,number,short_description,description,state,category,subcategory,product,contact,account,consumer
  limit: 1

步骤 2 - 搜索知识库:

Tool: SN-Query-Table
Parameters:
  query: workflow_state=published^123TEXTQUERY321=product return defective item return policy
  table_name: kb_knowledge
  limit: 3

步骤 3 - 查找类似的已解决案例:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: category=Returns^subcategory=Defective Product^stateIN6,7^ORDERBYDESCclosed_at
  fields: number,short_description,resolution_code,resolution_notes
  limit: 3

生成的建议:

CHAT RECOMMENDATION - CS0078901
Customer: John Martinez | Tier: Silver | Product: Widget Pro X

GREETING:
"Hi John, I'm sorry to hear about the issue with your Widget Pro X.
I'd be happy to help you with the return process."

RECOMMENDED RESPONSE (KB0045678 - Product Return Policy):
"For defective products within the warranty period, we offer a full
replacement or refund. I can initiate the return for you right now.
Could you confirm the order number or the date of purchase?"

FOLLOW-UP:
"I've initiated return RMA-2026-0456 for your Widget Pro X. You'll
receive a prepaid shipping label at [email protected] within the
next hour. Once we receive the item, your replacement will ship
within 2 business days."
示例 2:账单争议聊天及升级处理

场景: 回头客遇到账单问题,且之前有一个尚未解决的案例。

步骤 1 - 获取案例和客户历史记录:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: number=CS0079200
  fields: sys_id,number,short_description,state,category,contact,account,consumer,priority,escalation
  limit: 1
Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: consumer=[consumer_sys_id]^category=Billing^ORDERBYDESCopened_at
  fields: number,short_description,state,resolution_code,opened_at
  limit: 5

生成的建议:

CHAT RECOMMENDATION - CS0079200
Customer: Lisa Chen | Tier: Gold | Category: Billing

!! ATTENTION: Customer has 2 prior billing cases in last 90 days,
   including 1 unresolved (CS0077500). Handle with care. !!

GREETING:
"Hello Lisa, thank you for contacting us. I can see this is regarding
a billing concern, and I want to make sure we get this fully resolved
for you today."

EMPATHY RESPONSE (repeat issue detected):
"I understand this is frustrating, especially since you've had to
reach out about billing before. I sincerely apologize for the
inconvenience. Let me personally ensure this is addressed properly."

ESCALATION (if needed):
"Lisa, I want to make sure you get the best possible support on this.
I'm connecting you with our billing specialist team lead who has the
authority to review and adjust your account immediately."

相关技能

  • csm/case-summarization - 在生成建议前汇总完整的案例上下文
  • csm/email-recommendation - 生成电子邮件回复,而不是聊天回复
  • csm/sentiment-analysis - 分析客户情绪,以调整回复语气
  • csm/activity-response - 生成内部工作备注和状态更新
  • knowledge/content-recommendation - 深入搜索知识库的技巧

评论

支持 Markdown