我对 Alexa回复有疑问。
this.emit(':ask', speechOutput, repromptSpeech)
我知道this.emit(':tell',speechOutput)
将导致alexa说speechOutput
然后关闭会话,this.emit(':ask', speechOutput, repromptSpeech)
将不会关闭会话,Alexa将等待用户输入。但是这个新输入(由用户给出)将存储在何处。例如:
用户:“blah blah blah”的第二天是什么日子{这应该是一个插槽输入}
Alexa :抱歉,我没有收到日期/*speechOutput*/
。你会为我重复一遍吗? /*repromptSpeech*/
用户:这是2018年1月2日。
现在将存储此新信息 2018年1月2日的位置。 是否有任何函数可以传递一个参数来存储用户的新响应?
如果我在没有调用函数this.response.speak(speechOutput)
的情况下多次使用this.emit(':responseReady')
,它会按预期工作吗,还是Alexa会说出首先遇到的speechOutput
?
在我的技能方面,我向用户提供了很多不太好的数据。 我到现在所做的是:
我。从网站
II。构建所有数据的单个响应(speechOutput
)
包含超过100行)
III。使用speechOutput
this.emit(':tell',speechOutput)
但我想知道有没有办法让我可以给用户提供2或3行回复,然后问'你想知道更多吗?'。根据用户的回答,即“是”或“否”,我会告知更多结果,或者仅从技能中exit
。
答案 0 :(得分:1)
是的,你可以使用SSML和发出问题提供2或3行响应,以便alexa mic打开以接收用户的输入,具体取决于你提出的问题类型你必须处理像“你知道更多”这样的意图来自用户的可能反应是 Amazon.Yes / Amazon.No 。使用状态进行更好的意图映射。
答案 1 :(得分: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指令。
答案 2 :(得分:1)
例如,当使用以下代码时,响应构建器可用于生成多个语音输出:
this.response.speak(speechOutput1);
this.response.speak(speechOutput2);
this.emit(':responseready');
预期的输出:SpeechOutput1 + speechOutput2
要将其翻译成英文,您可以并且应该在需要使用音频或Alexa对话以外的其他方式时使用响应构建器。
在尝试提高互动技能时,您应该专注于仅使用响应使对话尽可能自然,并使触发其他意图的关键短语成为提示用户的一种提示,使您的技能直观。 >
我的最佳成绩来自使技能变得直观易用并促使用户朝着要说的方向发展的技能。
内置AMAZON.Yes
和AMAZON.No
的意图对您的自定义技能非常有用!
我希望这对您有帮助