我正在开发一个带有一个Intent的Alexa技能,其中包含一个带有几个可能值的Slot。
我的广告位定义为"name" : "Channel"
,"type" : "LIST_OF_CHANNELS"
和值
如何检索要在我的Lambda函数中使用的发音插槽值?它是"从话语部分检索插槽的值" 我希望得到答案。非常感谢。
// retrieve value of slot from utterance
var c = intent.slots.Channel.value;
// append value to end of URL that references API
fetchEnseParse("/channel/" + c, function(body) {
// continuation of this function is below
答案 0 :(得分:12)
var c = this.event.request.intent.slots.slotname.value
这应该会给你你想要的东西。
答案 1 :(得分:4)
如果你的lambda收到你可以在这里找到它......
{
"request": {
"type": "IntentRequest",
"intent": {
"name": "YourIntentName",
"slots": {
"slotname": {
"name": "slotname",
"value": "HERE!"
}
}
},
"locale": "en-US"
},
}
该事件将传递给您的lambda处理程序。
答案 2 :(得分:0)
var c = this.event.request.intent.slots.Channel.value;
答案 3 :(得分:0)
对我来说,以下工作:
event.currentIntent.slotDetails.<slot-name>.originalValue
其中slot-name
为Channel
。
答案 4 :(得分:0)
让我们说你对alexa说,&#34; 硬币&#34;并且您将其编程为比特币(主要对象名称)的同义词。
现在你可以得到2个结果。
首先:您获得原始值&#34;比特币&#34;,这是原始值/匹配值
或者第二:你得到了口头价值&#34;硬币&#34;
首先(比特币):
this.event.request.intent.slots.<yourslotname>.resolutions.resolutionsPerAuthority[0].values[0].value.name
秒(硬币):
this.event.request.intent.slots.<yourslotname>.value
小心:yourslotname不是Slottype!它的名字是
答案 5 :(得分:0)
仅查看this.event.request.intent.slots.<yourslot>.value
此值只有“话语”,可能不是您要查找的
我必须更深入地研究对象,并查看决议对象,并检查状态为code=="ER_SUCCESS_MATCH"
的授权对象
这是我的Java代码,可以正常工作-您几乎可以在Nodejs中做同样的事情
private String getSlotValue(JSONObject s)
{
String utterance="";
String choice ="NA";
try {
if(s.has("option"))
{
JSONObject optionObject =s.getJSONObject("option");
utterance =optionObject.getString("value");
JSONObject resolutionsObject =optionObject.getJSONObject("resolutions");
JSONArray resolutionsPerAuthority =resolutionsObject.getJSONArray("resolutionsPerAuthority");
for (int i = 0; i < resolutionsPerAuthority.length(); ++i) {
JSONObject auth = resolutionsPerAuthority.getJSONObject(i);
if (auth.getJSONObject("status").getString("code").equals("ER_SUCCESS_MATCH") )
{
if(auth.has("values"))
{
JSONArray values = auth.getJSONArray("values");
choice=values.getJSONObject(0).getJSONObject("value").getString("id");
}
}
}
}
return choice;
}
catch (Exception e) {
choice="Error "+e.getMessage();
return choice;
}
}