通讯
通讯分类包含向用户发送验证码,以及调用系统拨号和通讯录的行为。
| 行为名称 | 说明 | 支持的客户端 |
|---|---|---|
| 发送验证码 | 按使用场景向目标手机号或邮箱发送 6 位验证码(5 分钟有效)。 | 小程序 / Web |
| 拨打电话 | 调用系统拨号功能拨打指定号码。 | 仅小程序 |
| 添加手机通讯录联系人 | 将联系人信息添加到用户的手机通讯录。 | 仅小程序 |
发送验证码
按使用场景向目标发送 6 位数字验证码,发送后需要由对应的行为(注册、登录等)或行为流的「校验验证码」节点校验,完整配置流程见发送和校验验证码。
常用场景
- 注册、登录、重置密码、绑定或解绑手机号 / 邮箱、注销账号前的身份校验。
- 抽奖、提现等自定义业务操作前的二次确认,需配合自定义场景使用。
参数配置
| 参数 | 说明 | 类型 | 必填 |
|---|---|---|---|
| 发送渠道 | 系统组可选 短信(消耗项目的短信包数量)或 邮件;自定义组列出在 行为 → 验证码 → 发送渠道 中添加的自定义渠道。 | 枚举 | 是 |
| 使用场景 | 验证码的用途,取值来自系统枚举「验证码场景」,见下方使用场景。 | 枚举 | 是 |
| 发送给 | 接收验证码的手机号或邮箱。使用场景为 delete 时不显示,系统自动发送到当前登录用户已绑定的手机号或邮箱。 | 文本 | 是 |
使用场景
发送和校验时的使用场景必须一致。系统内置 6 个场景,由对应的行为自动校验:
| 场景 | 由哪个行为校验 |
|---|---|
register | 注册(手机号注册、邮箱注册) |
login | 登录(手机号验证码登录、邮箱验证码登录) |
reset | 重置密码 |
bind_account | 绑定(绑定手机号、绑定邮箱) |
unbind_account | 解绑(解绑手机号、解绑邮箱) |
delete | 注销 |
需要其他用途时,可以在 行为 → 验证码 → 使用场景 中新增自定义场景,修改后需同步后端。场景名称只能包含英文字母、数字和下划线,且不能以数字开头,例如 lottery、withdraw_confirm。自定义场景的验证码需要在行为流中用校验验证码节点校验。
微信小程序只支持 bind_account、unbind_account 和自定义场景。
运行结果与输出
- 结果:无
- 成功时:系统成功生成验证码并发出,流转入 成功时 分支。
- 失败时:因号码为空、格式错误、未开启对应登录方式、短信余额不足或发送过于频繁导致失败,系统流转入 失败时 分支。
运行机制
-
工作原理:
- 生成与保存:触发该行为后,Zion 服务端生成 6 位纯数字验证码,与 发送目标 和 使用场景 一起保存,有效期 5 分钟。同一目标、同一场景重新发送时,新验证码会覆盖旧验证码,旧验证码立即失效。
- 发送过程:
- 选择系统 短信 / 邮件:通过 Zion 的基础服务通道发送,短信会消耗项目的短信包数量。
- 选择自定义渠道:运行该渠道绑定的行为流,把发送目标、验证码、场景名称作为入参传入,由行为流对接服务商发送。
- 一次性使用:验证码被行为或「校验验证码」节点校验成功后立即作废。
-
边界限制:
- 前置条件:使用短信需在 行为 → 登录 中开启 手机号验证码,使用邮件需开启 邮箱验证码,否则发送失败。
- 发送频率限制(1 分钟冷却):使用系统 短信 / 邮件 时,同一手机号 / 邮箱在同一场景下两次发送须间隔至少 1 分钟,冷却期内重复发送会被拦截并报请求过于频繁的错误。不同场景分别计算冷却;使用自定义渠道时不做此限制,需要自行在行为流中防刷。
- 短信发送上限:使用系统 短信 时,同一手机号的验证码短信还受短信服务商的发送上限约束:每分钟最多 2 条、每小时最多 10 条、每个自然日最多 10 条。达到上限后,在对应时间窗口结束前再次发送会失败并流转入 失败时 分支。使用自定义渠道时不受此上限约束,以你自己对接的服务商规则为准。
- 场景锁定(易错点):验证码和发送时选择的 使用场景 绑定。例如:发送时选择
register场景,后续却调用登录行为校验,即使验证码数字正确,系统也会判定校验失败。
配置说明
使用自定义渠道发送验证码,需要先创建发送行为流,再在 行为 → 验证码 → 发送渠道 中添加渠道,步骤见接入自有短信 / 邮件服务。
常见错误
- 自动弹窗报错:当发送失败时(例如手机号为空、格式不对、触发了发送频率限制、或者短信包余额不足),除了进入 失败时 分支外,Zion 底层会自动弹出一个系统 Toast 提示(如 “Too Many Requests” 或对应的中文错误)。开发者无需在 失败时 分支中重复配置“显示提示”,以免出现双重报错弹窗。
- 发送过于频繁 (
ALIYUN_SMS_VERIFICATION_CODE_REQUEST_TOO_FREQUENT):同一手机号在一分钟内重复请求验证码时触发。建议在发送按钮上增加 60 秒倒计时,避免用户重复提交。
示例
登录时发送短信验证码(Web 应用)
目标:向用户输入的手机号发送用于登录的验证码。
关键配置:将 发送渠道 设为“短信”,使用场景 设为 login,并把 发送给 绑定为手机号输入组件的输出。
预期结果:系统向该手机号发送一条六位验证码,验证码有效期为五分钟,可用于 登录 行为的手机号验证码登录。
抽奖前发送短信验证码(Web 应用)
目标:已登录用户抽奖前,向其手机号发送验证码。
关键配置:先在 行为 → 验证码 → 使用场景 中新增场景 lottery;将 发送渠道 设为“短信”,使用场景 设为 lottery,发送给 绑定当前用户的手机号。
预期结果:用户收到验证码后,由抽奖行为流中的「校验验证码」节点校验,详见用自定义场景:抽奖前短信验证。
拨打电话
调用系统拨号功能拨打指定号码。电话号码支持固定文本和数据绑定。
该行为没有数据输出。
Web 应用如需调起拨号应用,请使用“打开外部链接”行为,并将链接配置为 tel://电话号码。实际调用的拨号应用由操作系统决定。
添加手机通讯录联系人
打开微信小程序的联系人保存界面,将联系人信息添加到用户的手机通讯录。姓名和电话号码为主要信息,还可以配置职位、地址、备注、网址和邮箱。
| 参数 | 必填 | 说明 |
|---|---|---|
| 姓名 | 是 | 联系人姓名,支持固定文本和数据绑定 |
| 电话 | 是 | 联系人电话号码,支持固定文本和数据绑定 |
| 职位 | 否 | 联系人的职位 |
| 地址 | 否 | 联系人的地址 |
| 备注 | 否 | 联系人备注 |
| 网址 | 否 | 联系人相关网址 |
| 邮箱 | 否 | 联系人邮箱 |
该行为没有数据输出。联系人是否最终保存,由用户在微信小程序弹出的联系人界面中确认。