node.js - alexa询问sdk v2 nodejs如何说出字符串数组作为响应

标签 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 + '<break time="1s">';
});

response = responseBuilder
    .speak(nearestNames)
    .getResponse();

getNearestNames API 调用发送一个数组作为响应。我试图一一说出每一个名字。但是将nearestNames 变量传递给speak() 函数会导致“请求的技能响应存在问题”。我该如何解决这个问题?

谢谢

最佳答案

您可以尝试使用下面的代码发送多个响应,它会调用 API 来获取图书名称,对其进行迭代并返回标题。它使用 request-promise-native模块发出请求,只是为了展示示例。

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();
  }
};

关于node.js - alexa询问sdk v2 nodejs如何说出字符串数组作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843002/

相关文章:

javascript - 使用 webpack 编译时来自 Terser 的 main.js 中的错误

python - 如何解决 10054 错误

node.js - 如何调用 http GET 并在 AWS Lambda 中使用响应?

node.js - 在 Node.js 中将生成标准输出结果存储为字符串变量

javascript - 速率限制注册 API

node.js - Adm zip 将 zip 缓冲区写入 ExpressJS 响应

node.js - HTTP 响应字符串末尾的奇怪字符

amazon-web-services - Amazon Lambda 写入 DynamoDB

node.js - Alexa Nodejs设备地址api

node.js - Elasticsearch 更新不返回任何 node.js 的结果