让我的 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一条消息表明它是否正确。
我想构建一个带有口头代码验证的应用程序。
我可以在那之前在 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一条消息表明它是否正确。