Программно вставить пользовательский контент в сообщение о намерении? - PullRequest
0 голосов
/ 05 сентября 2018

Я использую AWS ASK SDK для 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 голосов
/ 06 сентября 2018

Вы можете использовать директиву Dialog.ConfirmIntent, чтобы отправить Алексею команду для подтверждения всей информации, предоставленной пользователем для намерения. Вы также можете запросить подтверждение у пользователя в объекте OutputSpeech в ответе.

В ask-nodejs-sdk v2 директиву ConfirmIntent можно отправить через addConfirmIntentDirective().

Ex:

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

Проверьте этот ответ для получения дополнительной информации.
Подробнее о директивах Dialog здесь .
Ознакомьтесь с документацией из ResponseBuilder.

...