以编程方式将自定义内容插入“意图确认”消息中?

时间:2018-09-05 14:14:46

标签: javascript amazon-web-services alexa alexa-skills-kit alexa-skill

我正在使用AWS ASK SDK for Node.js V2来构建Alexa技能,我想知道是否可以以编程方式生成或更新“意图确认”的“ Alexa Prompt”。

挑战在于我们正在搜索价格,目标是在要求之前将价格注入“意图确认”消息中。

我当时想尝试“重新整理”用户,并在获得价格后强制再次提示,但这感觉很肮脏:

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();
    }
}

文档至少可以说一遍。

1 个答案:

答案 0 :(得分:3)

您可以使用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();

查看this答案以了解更多信息。
有关对话框指令here的更多信息。
检出ResponseBuilder中的documentation