【发布时间】:2020-05-15 21:41:36
【问题描述】:
我在用 Python 编写的 AWS Lambda 中使用 ask_sdk_core 来处理 Alexa 应用程序的逻辑。所讨论的意图是研究人员获取与样本数相关的权重的一种方式。意图的结构类似于Record [weight] grams for sample [sample_number]。样品编号必须是 6 位整数,重量必须是十进制数。最初我开发了一项 Lex 技能,在那里您可以提示输入特定的插槽值,因此如果意图到达时带有格式错误的样本编号(例如五位数字),我可以只提示输入样本编号,但保留捕获的重量原样.
lambda 函数使用类来处理意图,所以我的结构如下。 add_weight 从插槽中提取值,将它们传递给验证器,该验证器返回 speech 和 reprompt 的值,如果他们提供了格式错误的样本编号或格式错误的权重,则会通知用户。但现在,用户必须重做整个提示。
有没有办法保留格式正确的值并提示用户只输入缺失的值?现在看来我必须为每个插槽创建一个意图来处理这种类型用户输入,但感觉很糟糕。
class AddWeightHandler(AbstractRequestHandler):
"""Handler for AddWeight Intent."""
def can_handle(self, handler_input):
# type: (HandlerInput) -> bool
return ask_utils.is_intent_name("AddWeight")(handler_input)
def handle(self, handler_input):
# type: (HandlerInput) -> Response
speech, reprompt = add_weight(handler_input)
return (
handler_input.response_builder
.speak(speech)
.ask(reprompt)
.response
)
【问题讨论】:
标签: python alexa alexa-skills-kit