itsm-email-recommendation について
ServiceNow ITSM ケースへのメール返信を作成するスキルで、ユーザーや関係者との連絡を担う ITSM チーム向けです。ケース記録、メール履歴、技術メモ、ナレッジ記事を基に、受付通知、状況報告、解決通知、エスカレーションを作成します。
主な機能
- 01インシデント、変更、問題の背景を分析
- 02技術情報をメール案に反映
- 03ナレッジ記事や回避策を参照
- 04次の対応と予定時期を提示
- 05状況報告やクローズ通知を作成
活用シーン
- 01インシデント受付の確認を送信
- 02重大インシデントの状況報告を準備
- 03解決概要を添えてユーザーに通知
MCP 対応
MCP ツールで ServiceNow のケース、メール履歴、作業メモ、ナレッジ記事を参照し、推奨メールを作業メモとして保存できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill itsm-email-recommendationインストール後、Claude Code で/itsm-email-recommendationを入力して読み込まれたか確認します。
詳細
ITSM メールの推奨
概要
このスキルでは、IT サービス管理のケースに対するプロフェッショナルなメール返信を作成するための体系的なアプローチを提供します。以下を対象とします。
- インシデント、変更、または問題の状況を分析し、適切なメール返信を作成する
- 技術的な詳細を、技術に詳しくない宛先に過度な負担をかけずに盛り込む
- 返信でナレッジベースの記事や既知の回避策を参照する
- 明確な次の手順と解決までの見込み時間を提示する
- 継続中のインシデントについて状況更新メールを作成する
- 解決内容の概要を添えたクローズ通知メールを作成する
使用する状況: ITSM エージェントが、IT サービスのケースについてエンドユーザー、関係者、または管理者にプロフェッショナルで構成の整ったメール返信を送る必要がある場合に使用します。技術的な説明が必要な複雑なインシデントや、優先度の高い問題の状況更新に特に役立ちます。
必要なプラグイン: com.snc.incident(インシデント管理)
前提条件
- ロール:
itil、incident_manager、またはadmin - アクセス権:
incident、change_request、problem、kb_knowledge、sys_emailへの読み取りアクセス権、インシデントの作業メモへの書き込みアクセス権 - 知識: IT サービス管理プロセス、SLA 要件、組織のコミュニケーション基準に関する知識
- プラグイン:
com.snc.incidentが有効化されていること
手順
Step 1: ケースの状況を取得する
問題、現在の状態、関係者を把握するために、レコード全体を取得します。
MCP を使用する場合:
Tool: SN-Get-Record
Parameters:
table_name: incident
sys_id: [incident_sys_id]
fields: sys_id,number,short_description,description,state,priority,impact,urgency,category,subcategory,assignment_group,assigned_to,caller_id,caller_id.name,caller_id.email,caller_id.vip,opened_at,resolved_at,close_code,close_notes,business_service,cmdb_ci,sla_due,made_sla
REST API を使用する場合:
GET /api/now/table/incident/[incident_sys_id]?sysparm_fields=sys_id,number,short_description,description,state,priority,impact,urgency,category,subcategory,assignment_group,assigned_to,caller_id,opened_at,resolved_at,close_code,close_notes,business_service,cmdb_ci,sla_due,made_sla&sysparm_display_value=true
Step 2: コミュニケーション履歴を確認する
スレッドの一貫性を保ち、重複を避けるため、以前のメールを確認します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=incident^target=[incident_sys_id]^ORDERBYDESCsys_created_on
fields: sys_id,type,subject,body_text,recipients,sys_created_on
limit: 10
REST API を使用する場合:
GET /api/now/table/sys_email?sysparm_query=instance=incident^target=[incident_sys_id]^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,type,subject,body_text,recipients,sys_created_on&sysparm_display_value=true&sysparm_limit=10
Step 3: 技術的な状況を把握する
作業メモを確認して、診断結果と実施済みの対応を把握します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[incident_sys_id]^name=incident^element=work_notes^ORDERBYsys_created_on
fields: value,sys_created_by,sys_created_on
limit: 20
Step 4: 関連するナレッジ記事を探す
メールで参照するナレッジベースの記事を検索します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^short_descriptionLIKE[keyword1]^ORtextLIKE[keyword1]
fields: sys_id,number,short_description,text
limit: 5
Step 5: 関連レコードを確認する
状況を把握するため、関連する問題、変更、既知のエラーを特定します。
MCP を使用する場合:
Tool: SN-Execute-Background-Script
Parameters:
description: Gather related records for email context
script: |
var incId = '[incident_sys_id]';
var inc = new GlideRecord('incident');
inc.get(incId);
gs.info('=== RELATED RECORDS FOR EMAIL CONTEXT ===');
// Related problem
if (inc.problem_id && inc.problem_id.toString() !== '') {
var prob = inc.problem_id.getRefRecord();
gs.info('Problem: ' + prob.number + ' | ' + prob.short_description + ' | Workaround: ' + prob.workaround);
}
// Related changes
var change = new GlideRecord('change_request');
change.addQuery('reason', incId);
change.query();
while (change.next()) {
gs.info('Change: ' + change.number + ' | ' + change.short_description + ' | State: ' + change.state.getDisplayValue() + ' | Scheduled: ' + change.start_date);
}
// Similar recent incidents (for pattern context)
var similar = new GlideRecord('incident');
similar.addQuery('category', inc.category.toString());
similar.addQuery('state', '6'); // Resolved
similar.addQuery('sys_id', '!=', incId);
similar.addQuery('sys_created_on', '>=', gs.daysAgo(30));
similar.orderByDesc('resolved_at');
similar.setLimit(5);
similar.query();
gs.info('\n--- Similar Resolved Incidents ---');
while (similar.next()) {
gs.info(similar.number + ': ' + similar.short_description + ' | Resolution: ' + similar.close_notes.toString().substring(0, 100));
}
Step 6: メール返信を作成する
ケースの状態に応じて適切なテンプレートを選び、メールを作成します。
テンプレート 1:最初の受領確認
Subject: [INC Number] - Your request has been received: [Short Description]
Dear [Caller Name],
Thank you for contacting IT Support. We have received your request and created incident [INC Number] for tracking.
Issue Summary: [Short Description]
Priority: [Priority Level]
Assigned Team: [Assignment Group]
What happens next:
- Our [Assignment Group] team will review your request within [SLA timeframe]
- You will receive updates as we investigate
- You can check the status anytime at [Service Portal URL]
If you have additional information to share, please reply to this email or update the incident through the service portal.
Best regards,
[Agent Name]
IT Service Desk
Reference: [INC Number]
テンプレート 2:状況更新
Subject: Re: [INC Number] - Status Update: [Short Description]
Dear [Caller Name],
I wanted to provide you with an update on your incident [INC Number].
Current Status: [State]
Investigation Summary:
[Brief technical summary in plain language]
Actions Taken:
1. [Action 1]
2. [Action 2]
3. [Action 3]
Next Steps:
- [What will happen next]
- Expected timeline: [Estimated timeframe]
[If workaround available:]
In the meantime, you can use the following workaround:
[Workaround steps]
Please let us know if you have any questions or if the situation has changed.
Best regards,
[Agent Name]
IT Service Desk
Reference: [INC Number]
テンプレート 3:解決通知
Subject: Re: [INC Number] - Resolved: [Short Description]
Dear [Caller Name],
I am pleased to let you know that your incident [INC Number] has been resolved.
Resolution Summary:
[Clear description of what was done to resolve the issue]
Root Cause:
[Brief explanation of what caused the issue, if known]
What You Should See:
[Description of expected behavior now that the issue is resolved]
Preventive Steps:
[Any recommendations to prevent recurrence]
For future reference, you may find this knowledge article helpful:
[KB Article Title] - [KB Number]
This incident will be automatically closed in [X] business days if no further issues are reported. If you experience the issue again, please reply to this email or reopen the incident through the service portal.
Best regards,
[Agent Name]
IT Service Desk
Reference: [INC Number]
テンプレート 4:エスカレーション通知
Subject: Re: [INC Number] - Escalation Notice: [Short Description]
Dear [Caller Name],
I am writing to let you know that your incident [INC Number] has been escalated to our [Specialized Team] team for further investigation.
Reason for Escalation:
[Brief explanation of why escalation is needed]
What This Means:
- A specialist from [Team Name] will be assigned to your case
- They will have full context from our previous investigation
- You may be contacted for additional details
Updated Timeline: [New estimated timeframe]
We understand the urgency and are committed to resolving this as quickly as possible.
Best regards,
[Agent Name]
IT Service Desk
Reference: [INC Number]
Step 7: 記録して送信する
推奨メールを作業メモとして保存し、必要に応じて顧客に表示されるコメントとして追加します。
MCP を使用する場合:
Tool: SN-Add-Work-Notes
Parameters:
table_name: incident
sys_id: [incident_sys_id]
work_notes: |
=== RECOMMENDED EMAIL RESPONSE ===
Type: [Acknowledgment/Status Update/Resolution/Escalation]
Recipient: [Caller Name and Email]
Subject: [Subject line]
[Full email body]
=== REFERENCES ===
KB Articles: [KB numbers referenced]
Related Change: [CHG number if applicable]
Related Problem: [PRB number if applicable]
ツールの使用方法
MCP ツールのリファレンス
| ツール | 使用する状況 |
|---|---|
SN-Get-Record | インシデント、変更、問題の全体的な状況を取得する |
SN-Query-Table | メール履歴、作業メモ、関連レコードを検索する |
SN-Natural-Language-Search | メールで参照する関連ナレッジ記事を探す |
SN-Update-Record | メール通知の詳細でインシデントを更新する |
SN-Add-Work-Notes | 推奨メールを記録する |
SN-Execute-Background-Script | 複数レコードにまたがる状況を収集する、一括メールを作成する |
REST API リファレンス
| エンドポイント | メソッド | 用途 |
|---|---|---|
/api/now/table/incident | GET/PATCH | インシデントを読み取り、レコードを更新する |
/api/now/table/change_request | GET | 状況把握のため、関連する変更を探す |
/api/now/table/problem | GET | 関連する問題と回避策を探す |
/api/now/table/kb_knowledge | GET | 関連する KB 記事を検索する |
/api/now/table/sys_email | GET | コミュニケーション履歴を確認する |
/api/now/table/sys_journal_field | GET | 技術的な状況を把握するため、作業メモを抽出する |
ベストプラクティス
- 平易な表現: 受信者が理解できる言葉に専門用語を言い換え、技術的な詳細は作業メモに記載します
- 具体的に伝える: 曖昧な約束ではなく、インシデント番号、日付、具体的な次の手順を記載します
- 期待値を設定する: 予想される所要時間と、次にユーザーが期待できることを必ず伝えます
- セルフサービスを案内する: 今後ユーザー自身で解決できるよう、KB 記事とサービスポータルを案内します
- スレッドを維持する: メールスレッドの連続性を保つため、「Re:」の接頭辞を使用し、インシデント番号を含めます
- VIP への配慮: 発信者が VIP かどうかを確認し、それに応じて語調や緊急度の表現を調整します
- 語調を校正する: 特に不満を抱えているユーザーに対して、メールがプロフェッショナルさと共感を伝えていることを確認します
トラブルシューティング
メール履歴が読み込まれない
原因: 外部システム経由で送信されたメールは、sys_email に記録されていない場合があります
解決策: メールの内容が含まれている可能性があるコメントを sys_journal_field で確認します。配信状況については通知ログを確認します。
KB 記事が一致しない
原因: 検索語が具体的すぎるか、KB 記事が別のカテゴリに分類されています
解決策: 検索語の範囲を広げます。カテゴリ別の検索を試します。意味的な一致には SN-Natural-Language-Search を使用します。
メールテンプレートが状況に合わない
原因: インシデントの状態や状況が標準テンプレートに一致していません
解決策: 複数のテンプレートの要素を組み合わせます。具体的な状況に応じてカスタマイズします。必ず現在の状況、実施した対応、次の手順を含めます。
宛先が不明確
原因: 発信者と影響を受けたユーザーが別人であるか、複数の関係者に状況を知らせる必要があります
解決策: caller_id、opened_by、watch_list フィールドを確認します。重大インシデントの場合は、重大インシデントプロセスで定められた配布リストを使用します。
例
例 1: ネットワーク障害の状況更新
# 1. Get incident details
Tool: SN-Get-Record
Parameters:
table_name: incident
sys_id: [sys_id]
fields: number,short_description,state,priority,caller_id.name,business_service,assignment_group
# 2. Get recent diagnostic notes
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[sys_id]^name=incident^element=work_notes^ORDERBYDESCsys_created_on
fields: value,sys_created_by,sys_created_on
limit: 5
# 3. Draft status update email with technical findings in plain language
例 2: KB を参照した解決メール
# 1. Get resolution details
Tool: SN-Get-Record
Parameters:
table_name: incident
sys_id: [sys_id]
fields: number,short_description,close_code,close_notes,caller_id.name
# 2. Find relevant KB article
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^123TEXTQUERY321=[resolution topic]
fields: number,short_description
limit: 3
例 3: 重大インシデントの一括状況更新
Tool: SN-Execute-Background-Script
Parameters:
description: Generate status update for all users affected by major incident
script: |
var majorInc = new GlideRecord('incident');
majorInc.get('[major_incident_sys_id]');
// Find all child incidents
var child = new GlideRecord('incident');
child.addQuery('parent_incident', majorInc.sys_id.toString());
child.query();
gs.info('=== MAJOR INCIDENT STATUS UPDATE ===');
gs.info('Major Incident: ' + majorInc.number + ' | ' + majorInc.short_description);
gs.info('Affected Users: ' + child.getRowCount());
gs.info('\n--- RECOMMENDED BULK EMAIL ---');
gs.info('Subject: [' + majorInc.number + '] Status Update - ' + majorInc.short_description);
gs.info('Body: We are currently experiencing [issue description]. Our team is actively working on resolution. Current ETA: [timeframe]. We will provide the next update by [time].');
関連スキル
itsm/chat-reply-recommendation- チャットベースの応答候補itsm/incident-summarization- メールの文脈向けにインシデントを要約しますitsm/kb-generation- メールで参照する KB 記事を作成しますhrsd/email-recommendation- HR に特化したメール候補itsm/major-incident- 重大インシデントのコミュニケーションワークフロー