You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按配对规则排序消息列表以计算客服聊天管理员响应时长

客服聊天管理员响应时长配对实现方案

实现逻辑

你从API获取的聊天数据本身已经按发送时间升序排列,直接按如下规则遍历即可完成配对:

  • 初始化两个临时变量:user_first_ts 用于存储当前待回复的用户首条消息时间,初始为None;waiting_reply 用于标记当前是否存在用户待回复的提问,初始为False
  • 逐条遍历聊天消息:
    • 若当前消息发送方为User:
      • 若waiting_reply为False,说明这是新一批用户提问的首条消息,记录当前消息时间到user_first_ts,将waiting_reply设为True
      • 若waiting_reply为True,属于用户连续发送的多条消息,直接跳过即可
    • 若当前消息发送方为Admin:
      • 若waiting_reply为True,说明这是对应当前用户批次的首条回复,此时即可配对user_first_ts和当前管理员消息时间,计算两者的时间差作为响应时长,随后将waiting_reply设为False
      • 若waiting_reply为False,属于管理员后续连续发送的补充消息,直接跳过即可
  • 遍历完成后若waiting_reply仍为True,说明最后一条用户消息未收到管理员回复,单独标注即可

代码实现(Python)

from datetime import datetime

# 原始聊天数据
chat_data = [
    ['User', '2021-10-13 11:54:38', "message"],
    ['User', '2021-10-13 11:55:33', "message"],
    ['Admin', '2021-10-13 11:56:14', "message"],
    ['Admin', '2021-10-13 12:07:58', "message"],
    ['User', '2021-10-13 12:25:55', "message"],
    ['Admin', '2021-10-13 12:26:30', "message"],
    ['User', '2021-10-13 12:57:38', "message"],
    ['Admin', '2021-10-13 12:58:11', "message"],
    ['Admin', '2021-10-13 13:05:45', "message"],
    ['User', '2021-10-13 13:21:59', "message"]
]

# 存储配对结果
result = []
user_first_ts = None
waiting_reply = False

time_format = "%Y-%m-%d %H:%M:%S"

for msg in chat_data:
    sender, ts_str, content = msg
    if sender == 'User':
        if not waiting_reply:
            user_first_ts = datetime.strptime(ts_str, time_format)
            waiting_reply = True
    elif sender == 'Admin':
        if waiting_reply:
            admin_reply_ts = datetime.strptime(ts_str, time_format)
            response_seconds = (admin_reply_ts - user_first_ts).total_seconds()
            result.append({
                "用户首条消息时间": user_first_ts.strftime(time_format),
                "管理员首条回复时间": admin_reply_ts.strftime(time_format),
                "响应时长(秒)": int(response_seconds)
            })
            waiting_reply = False

# 处理未回复的用户消息
if waiting_reply:
    result.append({
        "用户首条消息时间": user_first_ts.strftime(time_format),
        "管理员首条回复时间": "无回复",
        "响应时长(秒)": None
    })

# 输出结果
for item in result:
    print(item)

运行结果

{'用户首条消息时间': '2021-10-13 11:54:38', '管理员首条回复时间': '2021-10-13 11:56:14', '响应时长(秒)': 96}
{'用户首条消息时间': '2021-10-13 12:25:55', '管理员首条回复时间': '2021-10-13 12:26:30', '响应时长(秒)': 35}
{'用户首条消息时间': '2021-10-13 12:57:38', '管理员首条回复时间': '2021-10-13 12:58:11', '响应时长(秒)': 33}
{'用户首条消息时间': '2021-10-13 13:21:59', '管理员首条回复时间': '无回复', '响应时长(秒)': None}

内容的提问来源于stack exchange,提问作者Andrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:45:03