让我的 google 家验证一个口头密码

Make my google home verify an oral code

我想构建一个带有口头代码验证的应用程序。

我可以在那之前在 dialogflow 中设置我的 cde,请验证它。

GH : "For continue, give me the code"
Me : " 1 2 3 4"
GH " Access granted" / "Access denied"

但是输入如何在 dialogflow 上获取此代码?

如果您想使用数字序列作为您的代码,您可以使用 @sys.number-sequence 实体来识别它,然后检查您的 webhook 中的代码。

另一种方法是简单地创建一个条目为“1234”的自定义实体'code'。

首先——考虑一下你是否真的想这样做。让某人大声说出密码并不是很安全,并且在多用户环境中几乎没有增加额外的安全性。

这有两个阶段 - 第一个是设置一个 Intent 来处理这个问题,特别是以您想要的格式,第二个是处理和验证这是正确的代码。

设置意图

我们需要两个意图 - 一个用于提示和设置上下文以便我们知道我们期待验证代码,另一个用于检查代码。

提示意图可能如下所示:

这里值得注意的部分是它设置了一个输出上下文。我们马上就会明白为什么这很重要。

处理数字输入的程序可能如下所示:

这个还有很多。首先请注意,我们需要一个与上一个 Intent 的输出上下文相匹配的输入上下文。这意味着只有在设置了 Context 的情况下,这个 Intent 才应该匹配。这让我们可以在对话的其他地方谈论数字而不会触发此验证。

接下来我们要查找与 @sys.number-sequence 内置实体类型相匹配的数字序列。还有其他可能对您有用的实体类型 - 请参阅 documentation for details 并选择一个有意义的实体类型或进行实验以找到最适合您的情况。

最后,我们将使用 webhook 实现来验证代码是否正确。下一届是哪届...

正在验证代码

虽然有很多方法可以在不使用 webhook 的情况下进行验证,但这确实是最直接的方法。如果您使用 Google 的库来处理来自 Dialogflow 的输入,您可以使用类似

的方式获取值
var code = app.getArgument('number-sequence');

使用任何参数名称。如果您不使用该库,可以在 result.parameters.number-sequence 的 JSON 中找到它。

然后您可以根据需要验证此代码,并return一条消息表明它是否正确。