首页 文章

Alexa响应和响应生成器

提问于
浏览
1

我对 Alexa responses 有一些疑问 .

1. this.emit(':ask',speechOutput,repromptSpeech)

我知道 this.emit(':tell',speechOutput) 将导致alexa说 speechOutput 然后关闭会话, this.emit(':ask', speechOutput, repromptSpeech) 将不会关闭会话,Alexa将等待用户输入 . 但是这个新输入(由用户给出)将存储在何处 . 例如:

User :"blah blah blah"的第二天是什么时候{这应该是一个插槽输入}

Alexa :抱歉,我没有收到日期 /*speechOutput*/ . 你会为我重复一遍吗? /*repromptSpeech*/

User :这是2018年1月2日 .

现在将存储2018年1月2日的新信息 . 是否有任何函数可以传递一个参数来存储用户的新响应?

2.this.emit(':responseReady')

如果我在我的技能中多次使用 this.response.speak(speechOutput) 而不调用函数 this.emit(':responseReady') ,它会按预期工作吗,还是Alexa会说出首先遇到的 speechOutput

3.如何使对话互动?

在我的技能方面,我向用户提供了大量数据并不好 . 我到现在所做的是:

  • I.从网上获取结果

  • 二 . 构建所有数据的单个响应( speechOutput )(包含超过100行)

  • III . 使用 this.emit(':tell',speechOutput) 说出 speechOutput

但我想知道有没有办法让我可以给用户提供2或3行响应,然后问'Do you want to know more?' . 并且基于用户的 answer ,即'Yes'或'No',我将从技能中告诉更多结果或只是 exit .

3 回答

  • 1

    对于案例1:基本上您可能已经创建了一个插槽 . 对于这个 - >用户:它是2018年1月2日 . 您可以使用event.request.intent.slot.date.value直接获取它 .

    对于案例3:要使对话交互,请使用Dialog Interface https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#dialog-interface . 对于您的示例,您可以使用elicit slot指令并确认slot指令 .

  • 1

    是的,您可以使用SSML和 emit ask 提供2或3行响应,以便alexa麦克风打开以接收来自用户的输入,具体取决于您提出的问题类型,您必须处理意图,如"Do you Know more"来自用户的可能响应将是 Amazon.Yes/ Amazon.No . 使用状态可以获得更好的意图映射 .

  • 1

    响应构建器可用于制作多个语音输出,例如在使用以下代码时:

    this.response.speak(speechOutput1);
    this.response.speak(speechOutput2);
    this.emit(':responseready');
    

    预期输出:speechOutput1 speechOutput2

    要把它变成英文,你可以而且应该在需要使用音频或Alexa谈话以外的东西时使用响应构建器 .

    在尝试制作交互式技能时,您应该专注于使用响应使对话尽可能自然,并且使用触发其他意图的关键短语成为用户提示说的内容,使您的技能更直观 .

    我最好的结果来自于使技能变得直观易用,并将用户推向了说话的方向 .

    此外, AMAZON.YesAMAZON.No 意图内置并且对您的自定义技能非常有用!

    我希望这有帮助

相关问题