为语音智能体设计安全的来电者身份验证
- 发布时间
- 最近更新
语音智能体正迅速从简单的 FAQ 应答系统,发展为可修改账户、处理交易和访问敏感客户数据的行动型系统。这一转变带来了关键挑战:如何在没有传统视觉验证方式的对话式 AI系统中验证来电者身份?
当语音智能体可以更新订阅、查询账户余额或发起退款时,必须像人工呼叫中心一样严格验证来电者身份,但整个交互仅通过语音进行。与遵循公司政策的人工客服不同,AI 智能体需要不依赖 LLM 判断、确定性且基于工具的身份验证。
本文总结了我们作为驻场部署工程师在企业部署中验证过的身份验证模式。我们将介绍 5 种核心方法,包括嵌入式组件的基于会话的身份验证、电话专用方法和 OTP 验证,并说明如何在 ElevenLabs 平台上通过确定性工作流门控实现每种方法。
更重要的是,我们将说明为何不能将身份验证交给对话推断。应通过隔离的子智能体、基于工具的验证和条件工作流路由进行设计,确保只有已验证用户才能执行特权操作。
摘要
- 语音智能体的来电者身份验证必须具有确定性并基于工具,不能交由 LLM 通过对话推断。
- 主应用身份验证会将现有会话数据传入智能体,因此已登录用户无需再次验证。
- 基于知识的身份验证通过服务端工具调用,将来电者提供的信息(如账号或出生日期)与后端系统进行核验。
- 电话部署可使用来电显示等系统动态变量静默验证身份,但由于来电显示可能被伪造或共用,应结合第二验证因素。
- 一次性代码验证会通过短信或电子邮件发送验证码,并通过后端服务进行验证。
确定性身份验证的架构基础
为确保只有已验证用户能访问账户相关信息,建议通过 ElevenLabs 工作流严格隔离环境和访问权限。身份验证应始终通过返回布尔成功或失败结果的工具调用实现,并在 ElevenLabs 工作流构建器中配置为调度工具。
将转移条件直接关联到工具调用结果后,只有成功验证身份才能访问具有账户数据权限的子智能体,且它与未验证用户完全隔离。这样可确保身份验证具有确定性,不由 LLM 决定,并阻止未验证身份时继续进入下游节点。
也可使用转移表达式作为可靠的转移方式。这些表达式引用由工具调用结果更新的动态变量。
实现示例
在 Salesforce 中验证用户(工具调用)。验证成功后,从 Salesforce 获取客户交易数据(另一次工具调用),再将用户转交给负责使用这些数据与客户沟通,并在需要时执行其他操作的子智能体。

用户身份验证方法
ElevenLabs 平台原生不支持这些身份验证方法。可通过服务端工具实现,并将其与存储身份验证数据的 CRM 或后端/数据库集成。
主应用身份验证
对于嵌入网站的语音智能体,主应用可在初始化智能体/组件时,通过动态变量传递用户会话数据(如登录状态、账户 ID 或会话令牌)。这些变量会通过相同的动态变量自动注入工具调用,使智能体无需单独验证身份,即可从集成系统获取个性化数据。
由于用户已由主应用验证,这可实现无缝的支持流程。可通过自定义配置进行设置,或使用 ElevenLabs 组件,在运行时通过组件配置传入变量(例如,<elevenlabs-convai dynamic-variables='{"user_id": "123", "account_tier": "premium"}'>)。
完整设置请参阅动态变量文档。
基于知识的身份验证(KBA)
语音智能体要求来电者提供账号、邮编、出生日期或安全问题答案等身份验证数据。服务端工具(Webhook 或后端调用)会根据数据库(如 CRM 或身份信息库)核验这些值。该工具会返回成功/失败结果,其中包括布尔状态(is_error)和说明文本。
可通过确定性工作流门控实现:获取相关信息后,配置工具调度,并使用基于工具成功/失败状态分支的工作流条件转移边,将已验证用户路由至“特权”智能体节点。
根据欺诈风险要求,此方法支持静态安全问题和动态“钱包外”式验证。
详情请参阅服务端工具和智能体工作流调度工具节点文档。
系统动态变量(仅限电话)
对于基于电话的对话(通过 Twilio 或 SIP 中继),智能体会自动访问电话专用系统变量,包括 system__caller_id(来电者电话号码)。对话开始时,此变量会自动填充。
可通过两种方式引用:
- 在提示词/消息中:使用双花括号引用,例如 {{system__caller_id}},系统会替换为实际值。
- 在工具参数中:配置工具参数使用这些变量,即可在提示词中不提及它们的情况下静默验证身份。
例如,可配置工具自动将来电显示传递到 CRM 查询端点,让智能体静默验证呼入号码是否与客户登记号码匹配,以完成用户身份验证。除工具调用外,还可将身份验证配置为在对话开始前执行的对话启动 Webhook。
安全提示:来电者可能使用与存档号码不同的号码,或者存储的号码可能被未授权人员使用,因此基于来电显示的身份验证应要求客户预先选择加入,或结合其他身份验证方法(如基于知识的问题)。
更多信息请参阅系统动态变量和启动 Webhook文档。
高级基于知识/安全问题身份验证
智能体可通过提出一组安全问题验证用户身份,只有来电者答对预定义数量的问题后才授予访问权限。可提示智能体从预定义列表中随机选择问题(如出生日期、邮编、宠物名字),并通过工具调用根据数据库核验来电者答案。
身份验证工具会返回包含当前成功次数的 JSON 响应。通过工具赋值,该计数会自动提取并存储/更新到动态变量中(如 auth_success_count)。每次验证成功后,该变量会递增。
达到所需验证次数(如 3 次)后,工作流表达式条件会检查动态变量值,并转移至特权子智能体节点。该表达式使用比较运算符(如 auth_success_count >= 3),根据身份验证状态以确定性方式控制访问。

我们的边和流程控制文档提供了更多参考信息。
一次性代码
这是一种通用方法:通过短信或电子邮件将一次性代码发送到用户设备。用户随后必须将代码告知智能体以供验证,才能获得访问权限。
以下是更详细的实现流程:
- 生成代码:智能体通过服务端工具调用专用端点来启动流程。此操作会生成安全的一次性代码,并通过用户首选渠道(短信或电子邮件)发送。
- 提示用户:随后,智能体要求用户提供收到的代码。在语音模式下,用户会朗读代码,并通过语音转文本捕获。
- 验证代码:智能体通过第二次工具调用,将用户提供的代码发送至后端验证服务。后端会验证代码是否匹配、是否过期以及是否已被使用。
- 工作流路由:智能体会根据验证响应处理结果:成功:若代码正确,则通过成功条件将用户引导至工作流中身份验证后的部分。失败:若代码错误,智能体可提示用户重新输入代码,或启动后备流程(如发送新代码)。
安全注意事项:应实施速率限制以防止暴力破解;代码应设置较短的有效期(3–5 分钟);并应跟踪和限制重试次数。对于语音交互,可设置确认提示,确保捕获代码时语音转文本的准确性。
使用 ElevenAgents 开始构建安全的语音身份验证
这些身份验证方法是灵活的构建模块,并非固定方案。应根据具体风险状况、监管要求和用户体验目标进行选择。客服机器人所需的安全措施不同于处理交易的银行助手。平台的灵活性让安全策略能随威胁变化和需求增长不断调整,始终兼顾保护与用户体验。
ElevenAgents 提供上述确定性工作流门控、调度工具和电话专用变量,让你能够构建绝不依赖 LLM 判断的来电者身份验证。
探索ElevenAgents 平台,查看完整工作流构建器,或联系销售团队,立即开始构建首个已验证身份的语音智能体工作流。




