AIでサポート対応時間を集計する方法|初回返信・解決・未完了を分ける

架空5件から初回返信と解決までの時間を別集計。再開中、未返信、未解決を0分へ変えず対象IDと分母を示します。

AIものさし編集部

AIでサポート対応時間のレポートを作るときは、初回返信まで、最初の解決まで、再開後も含めた解決までを別の指標にします。返信したことを解決したことに変えたり、未返信を0分として平均へ入れたりすると、処理が速く見える表を作ってしまいます。

この記事では、架空の問い合わせ5件を、同じ集計時点で整理します。成果物は、指標ごとの対象ID・件数・時間と、未返信・未解決の残件です。実チケットの取得、AI生成、Zendesk操作、契約上のSLA判定は行っていません。

受付のまとまりと、集計時点を固定する

今回の対象は、2026年10月20日9~12時に作成された架空の5件です。集計時点は同日15時、日本時間。すべて同じタイムゾーンで、営業時間や休日の除外、保留中の停止はせず、時刻間の実経過を分で数えます。

返信は、担当者が顧客へ最初に返した公開返信とします。自動受付通知や内部メモは、今回の返信イベントへ入れていません。また、記録は集計時点までそろっており、空欄はデータ取得漏れではなく、該当イベントがまだ起きていない設定です。実データなら、この区別から確かめます。

Zendeskの公式説明も、初回返信、最初の解決、直近の解決を異なる指標にしています。必要なイベントが起きるまで値がnullとなるネイティブ指標と、進行中のSLAカウンターも別です。以下はその区別を参考にした独自の集計例で、Zendeskの画面や全例外を再現するものではありません。Zendesk:時間指標(新しいタブで開く)

解決イベントと、現在の状態を両方残す

表は横にスクロールできます

問い合わせ作成初回返信最初の解決直近の解決15時の状態
T0109:0009:1010:0010:00解決済み
T0209:0009:3010:0014:00解決済み。11時に再開後、14時に再解決
T0310:0011:00なしなし未解決
T0411:00なしなしなし未返信・未解決
T0512:0012:2013:0013:0014時に再開し、現在は未解決

T02は最初の解決まで60分ですが、作成から直近の解決までは300分です。この300分は、担当者が実作業した時間ではありません。途中の待ち時間や一度解決していた区間も含む、作成からの実経過です。

T05にも13時の解決イベントがありますが、現在は再開中です。「解決時刻がある」という条件だけで、現在も解決済みと数えません。現在の状態とイベント履歴を切り離さず持ちます。

初回返信は4件、未返信は1件として報告する

初回返信までの時間は、T01が10分、T02が30分、T03が60分、T05が20分です。合計120分を4件で割ると平均30分。並べると10・20・30・60なので、中央値は中央2値の平均で25分です。

T04を0分として加えると120 ÷ 5=24分になりますが、0分で返信した事実はありません。この24分を5件の平均返信時間として報告しません。

表は横にスクロールできます

指標対象ID件数今回の値
初回返信までの平均T01・T02・T03・T054件30分
初回返信までの中央値同上4件25分
未返信T041件15時時点で残存

T04は11時作成から15時まで240分が経過しています。ただし、240分で初回返信が完了したわけではありません。「未返信で受付後240分経過」と、完了した返信時間とは別欄に置きます。

解決までの時間は、どの集団かを明記する

最初の解決イベントがあるのはT01・T02・T05で、それぞれ作成から60分です。この3件の平均は60分です。ただし、T05は現在再開中なので、この集計から「現在3件が解決済み」とは言えません。

現在の状態が解決済みのT01・T02だけを選び、作成から直近の解決までを比べるなら、60分と300分の2件、平均180分です。これは本稿で定めた「現在解決済みの完了分だけ」の集計方針です。Zendeskがネイティブ指標の値を持つ対象や、そのダッシュボード全体の既定集計と同じだとは主張しません。

表は横にスクロールできます

集計対象ID件数・値含めていないもの
最初の解決までの平均T01・T02・T053件、60分解決イベントのないT03・T04
現在解決済みの、作成から直近解決までの平均T01・T022件、180分現在未解決のT03・T04・T05
現在未解決T03・T04・T053件完了時間へ0として入れない

完了分だけの平均には、長く残っている未解決が入りません。平均180分だけを提示して対応全体が順調と結論せず、未解決3件も併記します。今回の5件を、顧客全体の体験や担当者個人の能力へ一般化しません。

暦時間と営業時間、SLAは別に確認する

Zendeskの初回返信時間には暦時間と営業時間の区別があり、公式資料はチャネルごとの例外やSLAとの違いも説明しています。利用するシステムでは、どのイベントで開始・終了し、何を除外するかを確認してください。Zendesk:初回返信時間(新しいタブで開く)

今回、営業時間表、休日、停止条件、契約の目標時間は入力していません。「30分ならSLA達成」といった判定はできません。別の期間や別チャネルと比較するなら、同じ作成期間の案件を追ったのか、その期間に解決した案件を集めたのかもそろえます。

掲載例の対象件数と時間を検算する

次のPythonは、上の固定例を計算します。時刻文字列へ日本時間のオフセットを付け、同日の実経過分を数えます。

from datetime import datetime
from statistics import mean, median

def t(hm):
    return datetime.fromisoformat("2026-10-20T" + hm + ":00+09:00")

def minutes(start, end):
    return (t(end) - t(start)).total_seconds() / 60

rows = {
    "T01": ("09:00", "09:10", "10:00", "10:00", "SOLVED"),
    "T02": ("09:00", "09:30", "10:00", "14:00", "SOLVED"),
    "T03": ("10:00", "11:00", None, None, "OPEN"),
    "T04": ("11:00", None, None, None, "OPEN"),
    "T05": ("12:00", "12:20", "13:00", "13:00", "OPEN"),
}
reply = {k: minutes(v[0], v[1]) for k, v in rows.items() if v[1] is not None}
first = {k: minutes(v[0], v[2]) for k, v in rows.items() if v[2] is not None}
completed = {k: minutes(v[0], v[3]) for k, v in rows.items() if v[4] == "SOLVED"}
assert reply == {"T01": 10, "T02": 30, "T03": 60, "T05": 20}
assert (mean(reply.values()), median(reply.values())) == (30, 25)
assert first == {"T01": 60, "T02": 60, "T05": 60}
assert mean(first.values()) == 60
assert completed == {"T01": 60, "T02": 300}
assert mean(completed.values()) == 180
assert {k for k, v in rows.items() if v[4] == "OPEN"} == {"T03", "T04", "T05"}
assert minutes("11:00", "15:00") == 240
print(reply, completed)

これは固定したデータの検算で、実チケットの取得や履歴からのイベント抽出は含みません。未来時刻、作成前のイベント、欠落した状態、ID重複を検出する汎用検査でもありません。実データでは、原イベントの時刻・種類・状態と集計定義を確認してから使います。

AIには分母と未完了を省かせない

架空の問い合わせT01~T05を、10月20日15時の状態で報告してください。
すべて日本時間、営業時間の除外や停止はせず実経過分を使います。
初回返信、最初の解決、現在解決済みの作成から直近解決までを分けてください。
各指標に対象ID・件数・平均、初回返信には中央値も示してください。
未返信や未解決を0分として平均へ入れないでください。
再開中のT05を現在解決済みとせず、過去の解決イベントとは別に扱ってください。
担当者の実作業時間、SLA達成、対応改善の因果は判断しないでください。
出力:集計範囲、指標別対象と値、未返信・未解決、定義と未確認事項。

この依頼と集計は手製例で、AIの正答率を測った結果ではありません。報告前は本文の数値を対象IDへ戻し、4件の平均を5件全体の値と説明していないか、未完了の残件が消えていないかを確認します。次回の集計では、同じ案件の状態が変わったことと、新しい対象群の結果を分けて記録してください。

参考資料

公式資料の確認日:2026年10月20日。問い合わせ、時刻、状態、集計は独自の架空例です。掲載Pythonと計算をローカルで検査しました。実チケット、イベント抽出、Zendesk設定、AI生成、営業時間計算、SLA、対応品質・効果、画面表示は未検証です。

質問から自分に合うAIを探す