Node.js alexa询问sdk v2节点如何说出字符串数组作为响应
在alexa回复中,我无法说出多个选项。请查找以下代码:Node.js alexa询问sdk v2节点如何说出字符串数组作为响应,node.js,response,alexa,alexa-skills-kit,ssml,Node.js,Response,Alexa,Alexa Skills Kit,Ssml,在alexa回复中,我无法说出多个选项。请查找以下代码: let results = await getNearestNames(data.results[0].geometry.location.lat, data.results[0].geometry.location.lng); // generate response let nearestNames = ""; results.map((obj) => { nearestNames += obj.name +
let results = await getNearestNames(data.results[0].geometry.location.lat, data.results[0].geometry.location.lng);
// generate response
let nearestNames = "";
results.map((obj) => {
nearestNames += obj.name + '<break time="1s">';
});
response = responseBuilder
.speak(nearestNames)
.getResponse();
let results=wait getNearestNames(data.results[0].geometry.location.lat,data.results[0].geometry.location.lng);
//生成响应
让最接近的名字=”;
结果.map((obj)=>{
最接近的名称+=对象名称+“”;
});
response=responseBuilder
.说出(最接近的名字)
.getResponse();
getNearestNames API调用发送一个数组作为响应。我试着一个接一个地说出每个名字。但是将nearestNames变量传递给speak()函数会导致“请求的技能的响应有问题”。我如何解决这个问题
谢谢您可以尝试使用下面的代码发送多个响应,它会发出一个API调用来获取书籍名称,对其进行迭代,并以标题进行响应。它使用模块发出请求,只是为了显示示例
async function getNames() {
try {
const options = {
method: "GET",
url: "http://libgen.io/json.php?ids=1,2&fields=Title,Author,MD5"
};
let result = await rp(options);
result = JSON.parse(result);
return result;
} catch (e) {
throw e;
}
}
const BookNameIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === "IntentRequest" &&
handlerInput.requestEnvelope.request.intent.name === "BookIntent"
);
},
async handle(handlerInput) {
const data = await getNames();
let names = "";
data.map(item => {
names += `${item.title} <break time="3s"/>`;
});
console.log("Names ", names);
const speechText = `<speak> The books names are, <break time="2s"/> ${names}</speak>`;
return handlerInput.responseBuilder
.speak(speechText)
.reprompt(speechText)
.getResponse();
}
};
异步函数getNames(){
试一试{
常量选项={
方法:“获取”,
url:“http://libgen.io/json.php?ids=1,2&fields=标题、作者、MD5“
};
让结果=等待rp(选项);
result=JSON.parse(result);
返回结果;
}捕获(e){
投掷e;
}
}
常量BookNameIntentHandler={
canHandle(handlerInput){
返回(
handlerInput.requestEnvelope.request.type==“IntentRequest”&&
handlerInput.requestEnvelope.request.intent.name==“BookIntent”
);
},
异步句柄(handlerInput){
const data=wait getNames();
让名字=”;
data.map(项=>{
名称+=`${item.title}`;
});
控制台日志(“名称”,名称);
const speechText=`书籍名称为,${names}`;
返回handlerInput.responseBuilder
.发言(演讲稿)
.reprompt(演讲稿)
.getResponse();
}
};
Alexa的resposnes在出现问题时对开发人员不友好,是吗 此错误可能是由
getNearestNames
方法(add.catch(e=>console.log(e))引发的异常引起的
并检查CloudWatch输出,或者由于响应时间太长-您只有10秒的时间来响应用户的输入,或者您只是没有将处理程序的方法标记为异步
。此外,我不确定Alexa是否使用
标记包装响应文本-您在示例中使用的是