Definition of Agent Response Time
🧭 1. Understanding the Context
There are three message types:
TYPE_USER_IN→ user sends a message (customer).TYPE_BOT_OUT→ bot replies.TYPE_AGENT_OUT→ live agent replies.
Agents may join mid-conversation, where the bot is already replying automatically. When the agent replies, the bot pauses temporarily.
The goal is to measure:
“How long it takes an agent to respond to a user’s message that needs human attention.”
🧩 2. Core Definition of Agent Response Time
Agent Response Time (ART) =
The time difference between the user’s last message that requires a human response and the agent’s first outgoing message after that.
However, since a bot might respond automatically before the agent takes over, we need to ignore bot messages when computing ART.
That means:
Only measure from the user’s message (TYPE_USER_IN)
To the next agent reply (TYPE_AGENT_OUT)
While ignoring intermediate bot messages (TYPE_BOT_OUT)
🧠 3. Rules for Accurate Measurement
Case | Description | Should Count as Response Time? |
|---|---|---|
User sends message → Agent replies directly | Standard case | ✅ Yes |
User sends message → Bot replies → Agent later joins | Agent took over after bot | ✅ Yes (start from user message, not bot) |
Bot sends proactive message → Agent replies | No user message triggered it | ❌ No |
Agent replies to another agent | Internal collaboration | ❌ No |
Agent replies after user message but after a long gap (bot paused, waiting for agent) | Still counts | ✅ Yes |
User sends multiple messages before agent replies | Use the last user message before the agent reply | ✅ Yes |
🧮 4. Algorithm / Logic Flow
You can calculate the agent response time like this:
For each TYPE_AGENT_OUT message:
Look backward in time for the most recent TYPE_USER_IN message.
Ignore any
TYPE_BOT_OUTorTYPE_AGENT_OUTmessages in between.Compute the time difference:
ART = agent_out.timestamp - user_in.timestamp
Exclude:
If there is no prior TYPE_USER_IN.
If the last message before agent reply was another agent message.
If the agent message is part of a rapid sequence (same agent continuing conversation).
If the agent sends multiple messages in a row, only the first message after the user input counts as a “response.”
🧾 5. Scenarios & Examples
🧩 Scenario A: Basic Case
Timestamp | Type | Message |
|
|---|---|---|---|
10:00:00 | TYPE_USER_IN | "Hi, I need help" |
|
10:00:05 | TYPE_BOT_OUT | "Hello! How can I assist you?" |
|
10:00:20 | TYPE_AGENT_OUT | "Hi John, I’ll help you with that." |
|
Agent Response Time = 10:00:20 − 10:00:00 = 20s
✅ Counted — even though bot replied first.
🧩 Scenario B: Bot Handles First, Then Agent Joins Later
Time | Type | Message |
|---|---|---|
11:00:00 | TYPE_USER_IN | "Can I get a refund?" |
11:00:03 | TYPE_BOT_OUT | "Please provide your order ID." |
11:00:10 | TYPE_USER_IN | "Order #12345" |
11:00:12 | TYPE_BOT_OUT | "Refund requests usually take 3 days..." |
11:00:40 | TYPE_AGENT_OUT | "Hi, I can confirm your refund has been processed." |
✅ Response time = 11:00:40 − 11:00:10 = 30s
(last user message before agent reply)
🧩 Scenario C: Agent Replies to Agent
Time | Type | Message |
|---|---|---|
12:00:00 | TYPE_AGENT_OUT | "Please handle this ticket." |
12:00:05 | TYPE_AGENT_OUT | "Sure, on it." |
❌ No response time recorded — internal agent-to-agent.
🧩 Scenario D: Multiple User Messages Before Agent
Time | Type | Message |
|---|---|---|
13:00:00 | TYPE_USER_IN | "Hello" |
13:00:05 | TYPE_USER_IN | "Is anyone there?" |
13:00:10 | TYPE_AGENT_OUT | "Yes, I’m here." |
✅ Response time = 13:00:10 − 13:00:05 = 5s
(Use the most recent user message)
🧩 Scenario E: User Message After Agent Is Already Active
Time | Type | Message |
|---|---|---|
14:00:00 | TYPE_AGENT_OUT | "Hello! How can I help?" |
14:00:05 | TYPE_USER_IN | "I need to change my email." |
14:00:10 | TYPE_AGENT_OUT | "Sure, I can do that." |
✅ Response time = 14:00:10 − 14:00:05 = 5s