以编程方式将自定义内容插入 Intent Confirmation 消息?

Programmatically insert custom content into Intent Confirmation message?

我正在使用 AWS ASK SDK for Node.js V2 构建 Alexa 技能,我想知道是否可以通过编程方式为 'Intent confirmation' 生成或更新 'Alexa Prompt'。

挑战在于我们 运行 搜索价格,目标是在询问之前将价格注入 'Intent confirmation' 消息。

我想尝试 'reprompt' 用户,并在我有价格后强制重新提示,但这感觉很脏:

module.exports = {
    canHandle(handlerInput) {
        return (
            handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
            handlerInput.requestEnvelope.request.intent.name ===
                'HelloWorldIntent'
        );
    },
    async handle(handlerInput) {
        let speechText;
        let repromptText;
        
        //perform web request to get price
        //then dynamically update the intent confirmation response prompt to include price, 
        //before asking intent confirmation prompt?
        
        return handlerInput.responseBuilder
            .speak(speechText)
            .getResponse();
    }
}

至少可以说缺少文档。

您可以使用 Dialog.ConfirmIntent 指令向 Alexa 发送命令以确认用户为意图提供的所有信息。您还可以提供提示,要求用户在响应的 OutputSpeech 对象中进行确认。

在ask-nodejs-sdk v2中,ConfirmIntent指令可以通过addConfirmIntentDirective()发送。

例如:

response = handlerInput.responseBuilder
  .speak('The price is 10 dollars, shall I confirm?')
  .reprompt('shall I confirm?')
  .addConfirmIntentDirective()
  .getResponse();

查看 答案了解更多信息。
有关对话框指令的更多信息 here.
查看 ResponseBuilderdocumentation