Alexa Responses 和 Response Builder

Alexa Responses and Response Builder

我对 Alexa 回复 有一些疑问。

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

我知道 this.emit(':tell',speechOutput) 会让 alexa 说 speechOutput 然后关闭会话,而 this.emit(':ask', speechOutput, repromptSpeech) 不会关闭会话,Alexa 会等待用户输入。但是这个新输入(由用户提供)将存储在哪里。例如:

用户:"blah blah blah" 的 2 号是星期几 {这应该是一个插槽输入}

Alexa:抱歉,我没有得到日期 /*speechOutput*/。你能为我重复一遍吗? /*repromptSpeech*/

用户:当时是2018年1月2日

现在这个新信息2018 年 1 月 2 日 将存储在哪里。 有什么函数可以传递一个参数来存储用户的新响应吗?

2。 `this.emit(':responseReady')`

如果我在 skill 中多次使用 this.response.speak(speechOutput) 而没有调用函数 this.emit(':responseReady'),它会按预期工作吗,还是 Alexa 只会说出第一个遇到的 speechOutput

3。如何使对话互动?

以我的技能,我向用户提供了很多不好的数据。 到目前为止我所做的是:

但我想知道有没有办法让我可以给用户 2 或 3 行的响应,然后询问 'Do you want to know more?'。并根据用户的 answer 即 'Yes' 或 'No',我会告诉更多结果或只是 exit 来自技能。

是的,您可以使用 SSML 提供 2 或 3 行响应并发出询问,以便 alexa mic 打开以根据您提出的问题类型接受用户的输入向上你必须处理像 "Do you Know more" 这样的意图,来自用户的可能响应将是 Amazon.Yes/ Amazon.No。使用状态有更好的意图映射。

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

获取它

对于案例 3: 要使对话具有交互性,请使用对话界面 https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#dialog-interface。 对于您的示例,您可以使用 elicit slot 指令和 confirm slot 指令。

响应生成器可用于生成多个语音输出,例如在使用以下代码时:

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

预期输出:speechOutput1 + speechOutput2

为了将其翻译成英语,您可以而且应该在需要使用音频或 Alexa 语音以外的其他内容时使用响应生成器。

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

我最好的结果来自于使技能直观地使用并推动用户朝着说什么的方向发展。

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

希望对您有所帮助