mcpField
C
chat-summarization-va

chat-summarization-va

github.com/happy-technologies-llc生産性4141 回インストール2 日前に更新
リポジトリ

chat-summarization-va について

Virtual Agent の会話を構造化して要約するスキルです。会話を引き継ぐエージェント、管理者、監査分析向けに、トピック、意図、結果、取得情報、引き継ぎ用の文脈をまとめ、複数会話の傾向分析にも対応します。

主な機能

  1. 01会話の要点を抽出
  2. 02トピック、意図、結果の分類
  3. 03解決またはエスカレーション状態の判定
  4. 04エージェント引き継ぎ情報の整理
  5. 05会話傾向の一括要約

活用シーン

  1. 01エスカレーション時の引き継ぎ準備
  2. 02会話トピックと結果の分析
  3. 03Virtual 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を入力して読み込まれたか確認します。

詳細

チャットの要約 - バーチャルエージェント

概要

このスキルは、バーチャルエージェントのチャットセッションを簡潔かつ構造的に要約し、エージェントへの引き継ぎの質を高め、傾向分析を可能にし、監査証跡を作成します。各要約には、トピックの分類、解決状況、収集したデータ、引き継ぎのコンテキストが含まれます。

  • バーチャルエージェントの会話記録から重要な情報を抽出します
  • 会話をトピック、意図、結果に基づいて分類します
  • 解決状況を判定します:自己解決、エスカレーション、途中離脱、未解決
  • ライブエージェントへシームレスに引き継ぐためのコンテキストパッケージを作成します
  • 収集済みのスロットと、フォローアップに必要な不足情報を特定します
  • 傾向の報告と品質分析のために、複数の会話を一括で要約します

使用するタイミング: ライブエージェントがエスカレーションされたチャットの状況をすばやく把握する必要がある場合、管理者が会話分析を必要とする場合、またはバーチャルエージェントとのやり取りについて監査証跡を作成する場合です。

前提条件

  • ロール: 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 のトピックカタログとエスカレーション経路に関する知識
  • データ: 会話履歴のあるアクティブなバーチャルエージェントのデプロイ

手順

ステップ 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
エスカレーション - 要求ありユーザーがライブエージェントを明示的に求めた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 Issues31 件のエスカレーション

ツールの使用

ツール目的使用するタイミング
SN-Query-Table会話、メッセージ、コンテキスト、トピックを取得します中核となるデータ収集
SN-Natural-Language-Search自然言語の条件で会話を検索します臨時の調査
SN-Update-Record会話レコードに要約を保存します結果の永続化
SN-Add-Work-Notes作業メモとして要約を記録します監査証跡
SN-Get-Table-Schema会話テーブルの構造を確認しますセットアップと調査

ベストプラクティス

  1. エスカレーション時に要約する -- 会話がエスカレーションされたら、エージェントへの引き継ぎを迅速に行えるよう、すぐに要約を作成します
  2. 要約は簡潔に保つ -- 最大10~15行を目安にします。エージェントに必要なのは、トランスクリプトではなく、すばやく把握できるコンテキストです
  3. 不足データを明示する -- 取得できていない必須スロットを明記し、エージェントが何を尋ねるべきか把握できるようにします
  4. ユーザーの感情を含める -- エージェントが対応を調整しやすいよう、不満、緊急性、混乱などを記録します
  5. 非表示メッセージを除外する -- システム内部データが含まれているため、is_hidden=true のメッセージは除外します
  6. 毎日まとめて要約する -- 傾向のレポートやトピックの最適化のため、集計要約を実行します
  7. 元のトランスクリプトを保持する -- 要約は全メッセージ履歴を補足するものであり、置き換えるものではありません
  8. 要約に一貫したタグを付ける -- 信頼性の高い分析のため、標準の結果コード(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 記事を探します

コメント