跳到内容

为语音智能体设计安全的来电身份认证流程

随着语音智能体开始处理敏感的账户操作,强健且确定性的来电身份认证已成为核心架构需求。

auth-flow-cover

语音智能体 正在从简单的 FAQ 回复工具,快速发展为可执行操作的系统,能够修改账户、处理交易、访问敏感客户数据。这带来了一个关键挑战:在没有传统可视化认证方式的对话式 AI 系统中,如何验证来电者身份?

当语音智能体可以更新订阅、查询账户余额或发起退款时,必须通过纯语音交互实现与人工客服同等严格的身份认证。与遵循公司政策的人类坐席不同,AI 智能体需要依赖工具实现确定性的认证,不能依赖 LLM 判断。

本文总结了我们作为 Forward Deployed Engineer 在企业项目中验证有效的认证模式。将介绍 5 种核心方法,包括嵌入式小组件的会话认证、电话专用方式和 OTP 验证,并说明如何在 ElevenLabs 平台通过确定性 workflow 控制实现。

更重要的是,我们将说明为什么不能把认证交给对话推理,而必须通过独立子智能体、工具验证和条件 workflow 路由来实现,确保只有通过认证的用户才能访问高权限操作。

确定性认证的架构基础

为确保只有通过认证的用户才能访问账户相关信息,建议通过 ElevenLabs workflow 实现严格的环境与权限隔离。认证应始终通过工具调用实现,输出布尔型成功或失败,并在 ElevenLabs workflow builder 中配置为分发工具。

将转移条件直接与工具调用结果关联后,只有认证成功才能访问账户数据的子智能体,未认证用户完全隔离。这样认证过程可控且确定,不依赖 LLM 判断,未验证身份无法进入后续节点。

也可以使用转移表达式作为可靠的转移方式。这些表达式引用通过工具调用结果动态更新的变量。

实现示例

在 Salesforce 中验证用户(工具调用),认证成功后,再通过另一个工具调用获取客户交易数据,然后将用户转移到负责与客户沟通并执行后续操作的子智能体。

auth-flow

用户身份认证方式

这些认证方式 ElevenLabs 平台未原生支持,但可通过与 CRM 或后端/数据库集成的服务端工具实现,认证数据存储在后端。

宿主应用认证

对于嵌入网站的语音智能体,宿主应用可在初始化智能体/小组件时,通过动态变量传递用户会话数据(如登录状态、账户 ID 或会话 token)。这些变量会自动注入到工具调用中,让智能体无需单独认证即可从集成系统获取个性化数据。

这样支持流程更顺畅,因为用户已由宿主应用验证。可通过自定义配置实现,或使用 ElevenLabs 小组件,在运行时通过小组件配置传递变量(如 <elevenlabs-convai dynamic-variables='{"user_id": "123", "account_tier": "premium"}'>)。

动态变量文档:

知识型认证(KBA)

语音智能体会要求来电者提供认证信息,如账户号、邮编、出生日期或安全问题答案。服务端工具(webhook 或客户端)会将这些信息与数据库(如 CRM 或身份库)比对。工具返回结果包含布尔状态(is_error)和描述文本。可通过确定性 workflow 控制实现:请求相关信息后,配置工具分发,并用 workflow 条件转移边根据工具成功/失败状态分流,将认证用户路由到高权限节点。

这种方式既支持静态安全问题,也支持动态“钱包外”验证,可根据风控需求选择。

工具文档:

系统动态变量(仅限电话)

对于电话会话(如 Twilio 或 SIP trunk),智能体可自动获取电话专用系统变量,包括 system__caller_id(来电号码)。该变量在会话开始时自动填充,可通过两种方式引用:1)在提示/消息中:用双大括号引用,如 {{system__caller_id}},会自动替换为实际值;2)在工具参数中:配置工具参数使用这些变量,实现静默认证,无需在提示中提及。

例如,可配置工具自动将来电号码传递给 CRM 查询接口,让智能体静默验证来电号码是否与客户登记号码一致,实现用户认证。也可将认证配置为会话启动 webhook,在对话开始前执行。

安全提示:由于来电者可能使用与登记不同的号码,或登记号码可能被他人获取,基于来电号码的认证应要求客户事先同意,或与其他认证方式(如知识型问题)结合使用。

系统动态变量与启动 webhook 文档:

高级知识型/安全问题认证

智能体可通过一组安全问题认证用户,只有答对预设数量的问题才允许访问。可提示智能体从预设问题列表(如出生日期、邮编、宠物名)中随机选择,并通过工具调用数据库验证答案。

认证工具返回的 JSON 响应包含当前成功次数。通过工具赋值,次数会自动提取并存储/更新到动态变量(如 auth_success_count)。每次验证成功后变量递增。

达到所需验证次数(如 3 次)后,workflow 表达式条件会检查动态变量值,转移到高权限子智能体节点。表达式用比较运算符(如 auth_success_count >= 3)实现基于认证状态的确定性访问控制。

Expressions

相关文档:https://elevenlabs.io/docs/eleven-agents/customization/agent-workflows#edges-and-flow-control 

一次性验证码

这是一种通用方式,通过短信或邮箱向用户设备发送一次性验证码,用户需将验证码反馈给智能体进行验证后才能访问。

实现流程:

  1. 验证码生成:智能体通过服务端工具调用专用接口,生成安全的一次性验证码,并通过用户首选渠道(短信或邮箱)发送。
  2. 用户输入:智能体提示用户提供收到的验证码。语音模式下,用户需口述验证码,系统通过语音转文本识别。
  3. 验证码验证:智能体通过第二次工具调用,将用户提供的验证码发送到后端验证服务。后端会校验验证码是否正确、未过期且未被使用。
  4. 流程路由:智能体根据验证结果处理:成功时,用户通过成功条件进入认证后的流程;失败时,可提示用户重新输入验证码或启动备用流程(如重新发送验证码)。

安全注意事项:应设置频率限制防止暴力破解,验证码有效期应短(3-5 分钟),并限制重试次数。语音交互时,建议增加确认提示,确保语音转文本识别准确。

总结

这些认证方式是灵活的基础组件,并非固定方案。应根据具体风险、合规要求和用户体验目标选择。客服机器人与处理交易的银行助手所需安全等级不同。平台的灵活性可让安全策略随威胁变化和需求增长而调整,始终兼顾安全与体验。

查看更多 ElevenLabs 团队的文章

用高质量 AI 音频创作