Skip to Content

通讯

通讯分类包含向用户发送验证码,以及调用系统拨号和通讯录的行为。

行为名称说明支持的客户端
发送验证码按使用场景向目标手机号或邮箱发送 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://电话号码。实际调用的拨号应用由操作系统决定。

添加手机通讯录联系人

打开微信小程序的联系人保存界面,将联系人信息添加到用户的手机通讯录。姓名和电话号码为主要信息,还可以配置职位、地址、备注、网址和邮箱。

参数必填说明
姓名是联系人姓名,支持固定文本和数据绑定
电话是联系人电话号码,支持固定文本和数据绑定
职位否联系人的职位
地址否联系人的地址
备注否联系人备注
网址否联系人相关网址
邮箱否联系人邮箱

该行为没有数据输出。联系人是否最终保存,由用户在微信小程序弹出的联系人界面中确认。

Last updated on