You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dialogflow中实现Google Home语音验证码验证?

实现Dialogflow语音验证码验证(适配Google Home)

嘿,我帮你一步步搞定这个语音验证码验证的需求,完全贴合你要的交互流程:Google Home提示输入验证码,你说出数字序列后返回验证结果。

1. 先搞定预设验证码的存储

首先得把你预设的验证码存起来,让Dialogflow能在会话里拿到它对比。最简单的方式是用上下文(Contexts)——毕竟验证码是会话内临时用的,不需要永久存储。

  • 去Dialogflow的「上下文」页面,创建一个名为verification_active的上下文,有效期设个5分钟足够用。
  • 给这个上下文加个参数expected_code,值就填你预设的验证码(比如1234)。

2. 创建启动验证的触发意图

接下来要做一个能触发验证流程的意图:

  • 新建意图,命名成StartVerification就行。触发短语可以设成你需要的(比如“开始验证”,如果是应用启动自动触发,也可以把这个逻辑加到默认欢迎意图里)。
  • 在「响应」模块里输入:“请输入验证码以继续”——这就是Google Home会说的提示语。
  • 最后在「输出上下文」里添加刚才创建的verification_active,这样会话就进入验证状态了,Dialogflow也能记住预设的验证码。

3. 做一个捕获验证码输入的意图

现在需要处理用户说出的数字序列,得让Dialogflow能识别并捕获这些输入:

  • 新建意图,命名为VerifyCode。
  • 在「训练短语」里加各种可能的输入示例,比如:
    • "1 2 3 4"
    • "一二三四"(如果是中文交互的话)
    • "1234"
    • "幺 二 三 四"(毕竟语音里常把1读成幺,得覆盖这种场景)
      多加点示例能让Dialogflow的语音识别更准确。
  • 把「输入上下文」设为verification_active,这样只有在验证状态下,这个意图才会被触发,不会干扰其他交互。
  • 添加一个参数user_code,类型选@sys.any就行——这样能直接捕获用户说的整段内容,后面再处理掉空格。如果你想更精准,也可以用@sys.number并允许重复提取,把多个数字拼接成字符串。

4. 加验证逻辑(两种方案任选)

方案一:用Dialogflow内置编辑器(零外部服务器)

如果你的验证码是固定的,用内置编辑器最方便:

  • 回到VerifyCode意图,开启「Fulfillment」里的“启用Webhook调用用于意图”。
  • 去「Fulfillment」页面,切换到「内联编辑器」,用Node.js写一段简单的逻辑:
    function verifyCode(agent) {
      // 从上下文里取出预设的验证码
      const expectedCode = agent.context.get('verification_active').parameters.expected_code;
      // 把用户输入的内容去掉空格,统一格式
      let userCode = agent.parameters.user_code.replace(/\s+/g, '');
      // 对比验证
      if (userCode === expectedCode) {
        agent.add('验证通过');
        // 验证通过就清除上下文,结束验证状态
        agent.context.delete('verification_active');
      } else {
        agent.add('验证失败,请重新输入');
        // 失败的话保持上下文,让用户可以重试
      }
    }
    
    // 把意图和处理函数绑定
    let intentMap = new Map();
    intentMap.set('VerifyCode', verifyCode);
    agent.handleRequest(intentMap);
    
  • 点「部署」按钮,等代码部署完成就生效了。

方案二:用自定义Webhook(适合动态验证码场景)

如果你需要动态生成验证码,或者有更复杂的逻辑(比如和后端数据库联动),可以自己搭个Webhook服务器:

  • 服务器里写和上面类似的逻辑:接收Dialogflow的请求,从请求里拿到用户输入的验证码和上下文里的预设值,对比后返回对应的响应。
  • 回到Dialogflow的「Fulfillment」页面,关掉内联编辑器,填上你的Webhook URL,保存就行。

5. 测试走一遍流程

  • 先在Dialogflow的测试控制台里试:触发StartVerification,会收到“请输入验证码以继续”的提示;然后输入“1 2 3 4”,如果预设验证码是1234,就会返回“验证通过”,输错了就返回“验证失败,请重新输入”。
  • 再用Google Home设备测试,确保语音交互正常——毕竟语音识别可能有小误差,要是发现某些输入识别不准,就回到「训练短语」里补充对应的示例。

小提示

  • 语音里常把1说成“幺”,把0说成“洞”,可以在代码里加个转换逻辑,比如把“幺”替换成“1”,“洞”替换成“0”,这样验证准确率会更高。
  • 如果要限制重试次数,可以在verification_active上下文里加个retry_count参数,每次验证失败就递增,达到次数后就返回“重试次数过多,请稍后再试”,并清除上下文。

内容的提问来源于stack exchange,提问作者Victor Attila Breelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:07:47