从内置 AMAZON.DURATION 插槽类型获取未格式化的 Alexa 值
Get unformatted Alexa value from built-in AMAZON.DURATION slot type
我正在使用 AMAZON.DURATION
内置 slot type 从我的自定义 Alexa 技能中获取数据。这完美地工作并将给定的持续时间转换为 ISO-8601 持续时间格式。
例如,插槽类型成功地将 "ten minutes" 转换为 PT10M
,我可以从传递给我的 Lambda 函数的请求对象中获取此数据。但是,我也想将未格式化的 "ten minutes" 也传递给我的 Lambda 函数。
这可能吗?
经过反复试验,我在亚马逊开发者论坛上提出了同样的问题 question,亚马逊的官方回复是:
Hi, this isn't possible although it is an interesting request!
我最终在 Python 中编写了一个手动转换函数。
应该手动转换吧。下面是 nodejs 转换为分钟的代码片段。让我们假设 Alexa 将 PT5M 发送到 Lambda
var time = "PT5M";
var res = time.substring(2, (time.length));
var mins;
var timelist = res.split("H");
if(timelist.length > 1){
mins = +parseInt((timelist[0]*60),10)+parseInt((timelist[1].substring(0,(timelist[1].length-1))),10);
}else{
mins = res.substring(0, (res.length-1));
}
console.log(mins);
我正在使用 AMAZON.DURATION
内置 slot type 从我的自定义 Alexa 技能中获取数据。这完美地工作并将给定的持续时间转换为 ISO-8601 持续时间格式。
例如,插槽类型成功地将 "ten minutes" 转换为 PT10M
,我可以从传递给我的 Lambda 函数的请求对象中获取此数据。但是,我也想将未格式化的 "ten minutes" 也传递给我的 Lambda 函数。
这可能吗?
经过反复试验,我在亚马逊开发者论坛上提出了同样的问题 question,亚马逊的官方回复是:
Hi, this isn't possible although it is an interesting request!
我最终在 Python 中编写了一个手动转换函数。
应该手动转换吧。下面是 nodejs 转换为分钟的代码片段。让我们假设 Alexa 将 PT5M 发送到 Lambda
var time = "PT5M";
var res = time.substring(2, (time.length));
var mins;
var timelist = res.split("H");
if(timelist.length > 1){
mins = +parseInt((timelist[0]*60),10)+parseInt((timelist[1].substring(0,(timelist[1].length-1))),10);
}else{
mins = res.substring(0, (res.length-1));
}
console.log(mins);