logo
开发者文档
搜索
用户

一、功能概览

「用户列表」是单个 Agent 维度下的用户画像中心,用于运营和开发者查看:

  • 哪些终端用户与该 Agent 发生过有意义的交互;
  • 每个用户的身份标识(userId / 匿名 ID);
  • 每个用户已产生的关键事件数量;
  • 每个用户的活跃时间(首次接触、最后活跃)。
  • 更多用户体系的信息可查看:用户概述

alt text

入口:开发者控制台 → 进入某个 Agent → 用户管理(User Manage) → 用户(Users)。

二、用户列规则

核心规则:只有在该 Agent 内产生过至少一条「关键事件」的用户,才会出现在用户列表里。

2.1 用户列表的产生方式

系统中存在「用户列表」,进入用户列表的触发点有两类:

触发点 是否会让用户出现在列表 说明
终端用户在该 Agent 中发送消息 仅保证后续如有事件可被关联;不会单独让此用户在列表可见
关键事件抽取后写入新事件 ,画像中的事件计数 +1,用户进入列表 同时更新最后活跃时间等字段
事件状态变更 已在列表中的用户更新
联系方式补录 已在列表中的用户补录手机号、显示名等

也就是说,单纯发了消息但没有触发任何关键事件的访客,不会出现在用户列表中;只有当大模型从对话中抽取出至少一条关键事件、或通过 API/UI 手动创建了一条关键事件,该用户才会被「曝光」到运营视图。

2.2 为什么要按关键事件入列

关键事件是系统对会话内容做语义抽取后,认定具备业务价值的事实片段(例如「取款」「投诉」「争议」「开户成功」等)。以「产生过关键事件」作为入列标准,可以保证:

  • 列表聚焦真正有业务价值的用户,避免被一次性试探的访客噪声淹没;
  • 用户行的「关键事件数」「最后活跃」等列具备可比性;
  • 后续的运营动作(标记处理、外呼跟进)有明确的事件锚点。

2.3 关键事件的产生方式

关键事件来自三种触发:

  • REALTIME(实时):每次会话有新消息后自动触发抽取;
  • SCHEDULED(定时):按计划周期对历史会话补抽;
  • MANUAL(手动):在会话详情页手动点击「抽取」。

抽取过程由 LLM 按当前 Agent 配置的「事件类型字典」和业务规则进行分类,输出 CREATE / UPDATE / MERGE / DELETE 四类操作。

因此,如果你期望某个 Agent 的用户列表能显示更多用户,应当先确认:
① 该 Agent 是否启用了关键事件抽取;
② 事件类型字典是否覆盖了你关心的业务场景。


三、身份标识:userId 与匿名 ID

3.1 字段定义

字段名 含义 由谁产生
userId 用户 ID,最高级标识,由接入方(开发者)从自己的业务系统(账号体系 / CRM)传入 开发者侧
anonymousIds 该用户关联过的所有匿名 ID 列表,用于跨设备 / 升级合并 系统维护

3.2 优先级规则

系统在定位「同一个用户」时遵循:

userId 时,以 userId 为准;无 userId 时,回退到 AnonymousId

UI 上「用户身份」列的渲染同样遵循这一规则:优先展示 userId,否则展示 AnonymousId,并把 displayName(昵称)作为副标题。

3.3 两者关系:从匿名到登录的升级

终端用户常见的生命周期是:

访客(仅有 anonymousId) ──登录/注册──▶ 注册用户(带 userId)
                      
                      访客(仅有 anonymousId)  ──登录/注册──▶  注册用户(带 userId)

                    
此代码块在浮窗中显示

平台提供 bindUserId(botId, anonymousId, userId) 用于身份升级

  • 若该 userId 在该 Agent 下尚不存在
    • 直接在原匿名画像上写入 userId
    • primaryAnonymousId 与匿名 ID 列表保留,历史关键事件继续归属同一画像。
  • 若该 userId 在该 Agent 下已存在
    • 把当前匿名画像的所有 anonymousIds 合并到已登录用户画像中;
    • 删除匿名画像;
    • 实现「先匿名访问 → 再登录到老账号 → 历史合并」的体验。

因此,列表里看到的某个用户行可能历经过:① 多个匿名 ID(多次清理 cookie / 跨设备),② 最终被绑定到同一个 userId。「匿名 ID」列上的数量提示就是 anonymousIds.length

3.4 关键事件如何归属用户

关键事件实体(c_bot_event)上同样存有 userIdanonymousId 字段。在用户详情抽屉里查询事件时,匹配规则为:

  • 当用户已有 userId:只查询 event.userId == userId 的事件;
  • 当用户仅有匿名 ID:查询 event.userId 不存在 且 event.anonymousId == primaryAnonymousId 的事件。

这样可以确保:升级后的注册用户能看到 userId 名下的全部事件;尚未升级的匿名用户只看到自身匿名维度下的事件,不会被错误聚合。


四、时间字段:首次接触 vs 最后活跃

4.1 字段定义

中文 类型 含义
首次接触 毫秒时间戳 该用户画像在本 Agent 中首次被创建的时间
最后活跃 毫秒时间戳 该用户画像最近一次被触达/变更的时间

4.2 写入规则

  • 首次接触:只在用户列表首次创建时写一次,之后永远不变。可以理解为「该用户与本 Agent 的认识起点」。
  • 最后活跃:每次以下事件都会刷新为当前时间:
    • 用户在该 Agent 内发送了一条消息;
    • 该用户产生了一条新的关键事件;
    • 关键事件状态发生变更;
    • 联系信息(手机号/昵称)被补录。

4.3 业务含义

场景 应该看哪个字段
用户获取/新用户分析、留存队列划分 首次接触
活跃度排序、跟进优先级、清单刷新 最后活跃
长期未来访的「沉睡用户」筛选 最后活跃(按升序或时间窗筛选)

4.4 列表默认排序

用户列表默认按 最后活跃时间倒序展示——最新有动静的用户排最前面。
两个时间列均支持点击列头按数值排序。

五、列表字段一览

取值字段 说明
用户身份 userIdAnonymousId(优先 userId) + displayName 副标题 行标题;点击后弹出关键事件抽屉
匿名 ID anonymousIds(数量徽标 + 鼠标悬浮列出) 反映该用户绑定/合并过的匿名 ID 数
关键事件 totalEventCount 累计事件数;点击进入事件视图
最后活跃 lastActiveTime 见第四章
首次接触 firstContactTime 见第四章

六、使用指南

6.1 检索用户

页面顶部的关键字搜索框支持四类匹配(任一命中即可):

字段 匹配方式
userId 完全匹配
anonymousId 完全匹配
displayName 正则模糊匹配
phone 正则模糊匹配

注意:userId / 匿名 ID 不支持模糊查询,必须输入完整值。
显示名和手机号支持模糊查询。

6.2 查看用户的关键事件

在用户行点击「关键事件」列的数字(或行末「查看」),右侧抽屉会按以下条件分页拉取事件:

  • 用户范围:按 3.4 节规则按 userId 或匿名 ID 过滤;
  • 支持二级过滤:事件分类、状态、关键字(基于事件摘要的正则);
  • 默认按事件时间倒序展示;

事件抽屉中的列:事件分类、事件摘要、状态、优先级、置信度、更新时间。

6.3 状态、优先级、置信度的取值

维度 可选值
状态 (status) 待处理 PENDING / 处理中 IN_PROGRESS / 已解决 RESOLVED / 已关闭 CLOSED
优先级 (priority) 低 LOW / 中 MEDIUM / 高 HIGH / 紧急 CRITICAL
置信度 (confidence) 低 LOW / 中 MEDIUM / 高 HIGH

6.4 常见运营动作

  • 新用户跟进:筛选近 N 天首次接触的用户;
  • 沉睡唤回:配合关键事件分类筛出有过高价值动作但已不活跃的用户;
  • 未处理事件清单:进入用户详情抽屉后用「状态 = 待处理 / 处理中」筛选,再批量跟进。

七、常见问题(FAQ)

Q1:我看到一个用户在前端发了很多消息,但用户列表里搜不到他?
A:用户列表只展示「产生过关键事件的用户」。若该 Agent 未启用关键事件抽取,或抽取结果为空(消息内容不命中任何已配置的事件类型),则该用户不会进入列表。请检查 Agent 的「关键事件抽取」开关与事件类型字典。在开发空间-Debug的对话,也不会被用来提取关键事件,也不会展示在用户列表中。

Q2:同一个真实用户为什么有时是匿名 ID、有时是 userId?
A:终端用户在登录前,由 SDK 生成匿名 ID 进行会话;登录后接入方需把业务侧的 userId 传入。系统会通过 bindUserId 把匿名画像合并到 userId 画像,列表中后续看到的是 userId 那一行;原匿名 ID 会保留在 anonymousIds 列表里,便于追溯。

Q3:「最后活跃」和会话/消息表的最近时间不一致?
A:以画像为准。最后活跃时间在消息到达、事件创建、事件状态变更、联系方式更新这四类时点会被刷新;如出现差异,多半是因为某次操作走了非标准路径(例如离线导入)。

Q4:「首次接触」可以修改吗?
A:不可以。该字段使仅在首次创建时落库,之后任何更新都不会改写它。

Q5:用户列表与会话列表是什么关系?
A:会话列表(conversationId 维度)记录每一次对话;用户列表(userId / anonymousId 维度)是会话之上的人维度聚合。一个用户可对应多条会话;一条关键事件必然归属一个会话,也必然归属一个用户画像。