如何在 dialogState 完成时从 lambda 函数向用户提示问题

How to prompt a question from lambda function to user when dialogState is completed

我正在创建 Alexa 技能,但被亚马逊拒绝了。我的技能工作方式如下,

User: "alexa, ask doctor is it safe to use vaccine during pregnancy"

Alexa: "gives a response, fetched from DynamoDB" - (dialogState: Complete)

我从亚马逊收到了以下评论:

技能完成任务后,会话保持打开状态,不会提示用户。如果技能未提示用户输入任何内容,则它必须在完成请求后关闭会话。

谁能帮我解决这个问题?

我尝试使用 DelegateDialog 但它似乎不起作用。

handler_input.response_builder.add_directive(DelegateDirective())
                              .speak(message)
                              .ask(reprompt)
                              .set_card(SimpleCard("Custom", message))

我希望 Alexa 向用户提问,例如“你还有其他问题吗?” 这样对话就不会结束并继续进行。我不想在 Alexa 发送答案后立即关闭会话。

几件事:

delegate 指令是当您希望 ASK(Alexa Skills Kit) 确定接下来要发言的内容时。这仅在您有 dialog model 需要插槽、引出提示等 )且对话尚未完成时才有意义。您似乎没有使用对话模型,并且无论如何您都在委托和提供 speak() ,我认为这不是您想要的。

对于您的场景,您可能希望生成包含答案和下一个问题的完整输出。它可以像 string-append 一样简单:message = db_response + ". Anything else?"