SMS OTP 验证
SMS OTP 验证
在智能体对话中使用 Twilio Verify 通过 SMS 发送并验证一次性验证码。

概述
本指南介绍如何将 Twilio Verify 集成到 ElevenLabs 智能体,以便在实时语音对话中向来电者的电话号码发送 OTP,并验证对方读出的验证码。
你将了解如何:
- 创建 Twilio Verify 服务,并对凭据进行 Base64 编码以完成身份验证。
- 在控制台、使用 Agents CLI 或通过 ElevenLabs API 配置两个 webhook 工具(
send_SMS_verification和check_SMS_verification)。 - 使用包含密钥值的
Authorization请求头验证两个 webhook 调用。 - 启用
skip_turn系统工具,以便来电者尚未收到验证码时,智能体可以等待。
前提条件
- 已启用 Twilio Verify 的 Twilio 账户。如果 Twilio Console 中没有 Verify,请通过 Twilio 支持或 Twilio 客户团队申请访问权限。
- 如果 Twilio 账户处于试用模式,目标电话号码必须是 Twilio 中已验证的来电显示号码。
编码凭据并配置 webhook 工具
为 Basic 身份验证编码 Twilio 凭据
Twilio Verify 使用 HTTP Basic 身份验证,其中 Account SID 为用户名,Auth Token 为密码。可在 Twilio Console 首页的 Account Info 下找到两者。
在 shell 中对 ACCOUNT_SID:AUTH_TOKEN 进行 Base64 编码(以冒号分隔,不含空格):
复制输出内容。完整的 Authorization 请求头值由 Basic 一词、一个空格和该 Base64 字符串组成。在接下来的步骤中将其保存为工具密钥。
配置 send_SMS_verification 和 check_SMS_verification 工具
send_SMS_verification 调用 Twilio Verify 发送 SMS OTP。check_SMS_verification 提交来电者说出的数字。两者都需要相同的 Verify Service SID 和 Authorization 密钥。
通过控制台添加
通过 CLI 添加
通过 API 添加
send_SMS_verification

在智能体设置的 Agent 部分中,选择 Add Tool,然后选择 Webhook。
将 YOUR_VERIFY_SERVICE_SID 替换为第一步中的 VA... SID。
身份验证请求头: 在 Headers 下添加 Authorization,类型选择 Secret,然后粘贴完整值(Basic 加 Base64)。请参阅 Webhook 工具。
请求体参数: 将 Content type 设为 URL-encoded(application/x-www-form-urlencoded)。添加以下参数,并将值类型设为 LLM Prompt:
check_SMS_verification
添加第二个 webhook 工具:
使用与 send_SMS_verification 相同的 Verify Service SID 和 Authorization 密钥。
请求体参数: 使用 URL-encoded。通过 LLM Prompt 添加 To(E.164)和 Code(OTP 数字)。
如果在控制台中将 Channel 配置为由 LLM 填充的字段,请在系统提示词中添加说明,确保模型始终传入 sms。上方 CLI 和 API 示例使用 constant_value / constantValue 固定 sms,因此模型不会选择渠道。
启用 skip_turn 系统工具
来电者通常需要一点时间接收 SMS,之后才能读出验证码。若不使用 skip_turn,智能体可能会打断停顿或重复提示。
通过控制台添加
通过 CLI 添加
通过 API 添加
在 Tools 中选择 Add Tool,选择 System tool,然后启用 Skip turn。无需进一步配置。
在系统提示词中添加指引,让模型知道何时调用该工具,例如:
有关详细信息,请参阅 Skip turn。
故障排除
Twilio 60200 — 无效参数(HTTP 400)
当请求 URL 或请求体不符合 Verify API 的要求时,Twilio 可能会返回如下响应体:
检查项: 路径必须使用 Authenticate(Verify)服务设置中的 Verify Service SID(VA...)。在 .../Services/{Sid}/... 中填入 Account SID(AC...)是导致 60200 的常见原因。其他无效参数情况请参阅 Twilio 的 60200 文档。
Twilio 20003 — 身份验证错误 — 未提供凭据(HTTP 401)
当 Authorization 请求头缺失、格式错误或未发送时,Twilio 可能会响应:
检查项: 工具必须发送 Authorization 请求头,其值应为完整的 Basic <base64> 字符串(包括 Basic 一词及其后 Base64 输出前的一个空格)。Base64 输入必须严格为 ACCOUNT_SID:AUTH_TOKEN,不能包含额外的空格或换行。确认两个 webhook 工具的此请求头都已关联该密钥。请参阅 20003。
其他问题
- 试用模式下号码被拒绝: 在 Twilio Console 中打开已验证的电话号码,确认测试前目标号码已列出。
- 智能体打断来电者: 确认已启用 Skip turn,且系统提示词指示模型在来电者需要时间时使用
skip_turn。