我正在使用alexa-sdk在节点中构建Alexa技能。我使用dialog model来处理用户交互。我在将流程传递给新的request types时遇到了一些麻烦,例如从启动请求到意向请求。
以下是我的处理程序的示例以及我理想的内容。我的具体用例是我想询问用户的一些问题,然后根据他们的回答将它们发送到不同的意图。在意图中我想访问请求对象,就好像他们最初输入了这个意图一样,因此对话框模型可以完成它的工作。
const handlers = {
'LaunchRequest': function () {
this.emit('Entry'); // this does not do what I want
},
'Entry': function () {
let request = this.event.request; // this is the launch request object.
// I would like to get the request object for Entry, like if the user started here
// ask some questions, potentially passing the torch to a new intent based on the answers
}
};
那么,有没有办法去打电话"像用户最初向该意图提出请求的意图?对不起,如果我错过了文档中显而易见的内容,我认为我的搜索非常彻底,但是有很多文档。 ps:我当然可以手动构建请求对象,但我真的不应该感觉到。
答案 0 :(得分:3)
我很确定没有办法按照你的要求调用意图。
如果您浏览对话指南here的语法说明,则说:
请注意,在返回Dialog指令时无法更改意图,因此意图名称和插槽集必须与发送给您的技能的意图相匹配。
通过返回对话指令,您可以引出'或者'确认'插槽或意图,甚至让代理人为您处理对话框,并在技能构建器中设置提示和重新提示。
据我所知,触发特定意图的唯一解决方案是让用户调用它。您可以引导用户说出特定的连续性以触发您的意图。
至于保存旧请求,您可以使用session attributes。只需在Launch之后使用包含整个LaunchRequest的会话属性构建响应。
<?php
$url = "https://api.coinmarketcap.com/v1/ticker/?convert=EUR";
$response = file_get_contents($url);
echo $response;
?>