从Lambda函数调用REST API

用户1366265

我正在尝试建立一种调用REST API来获取数据的技能。我正在使用HelloWorld示例,并对其进行修改以适合我的需求。我正在使用Request节点(node.js)发出请求。

但是,对我而言,我无法正常工作。我在日志中看到调用了该函数,并且返回了正确的结果,但是发送给Alexa的响应为空!知道我缺少什么吗?

const HelloWorldIntentHandler = {
  canHandle(handlerInput) {
    console.log("HelloWorldIntentHandler 1: ");
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'HelloWorldIntent';
  },
  handle(handlerInput) {
    console.log("HelloWorldIntentHandler 2");
    var speechText = 'Hello World';

    Request.get(url, function(error, response, body) {
      console.log("I'm here")
      var data = JSON.parse(body)
      var result = data.records.totalNum
      if (result > 0) {
          speechText = "There are " + result + " matches";
      } else {
          speechText = "ERROR";
      }

      return handlerInput.responseBuilder
        .speak(speechText)
        .withSimpleCard('Hello World', speechText)
        .getResponse();
     });
  },
};

日志中的错误是

Error handled: speechOutput.trim is not a function
用户1366265

我能够使用Axios而不是Request来使它工作。

const HelloWorldIntentHandler = {
  canHandle(handlerInput) {
    console.log("HelloWorldIntentHandler 1: ");
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'HelloWorldIntent';
  },
  async handle(handlerInput) {
    console.log("HelloWorldIntentHandler 2");
    var speechText = 'default';

    try {
      const response = await Axios.get(url);
      var result = response.data.totalRecs;
      if (result > 0) {
          speechText = "There are " + result + " matches";
      } else {
          speechText = "ERROR";
      }
      console.log("text=" + speechText);
      return handlerInput.responseBuilder
        .speak(speechText)
         .withSimpleCard('Hello World', speechText)
         .getResponse();
    } catch (error) {
      console.log(error);
    }
  },
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

REST API调用在Lambda函数中失败

来自分类Dev

从 lambda 函数调用 Spotify API

来自分类Dev

从Lambda函数创建REST API

来自分类Dev

从Kusto函数调用REST API

来自分类Dev

Api Gateway无法调用Lambda函数

来自分类Dev

POST REST API使用参数调用函数

来自分类Dev

Flutter通用REST API调用函数

来自分类Dev

使用 c# 的 Lambda 函数无法调用外部 HTTPS API

来自分类Dev

如何集成API Gateway以使用参数调用Lambda函数?

来自分类Dev

如何在AWS Lambda函数中进行外部api调用

来自分类Dev

API网关调用了我的lambda函数的旧版本

来自分类Dev

如何提供API网关集成授权来调用Lambda函数?

来自分类Dev

如何授予API网关通过CloudFormation调用lambda函数的权限?

来自分类Dev

Nodejs API调用返回未定义的lambda函数

来自分类Dev

如何使用GraphQL API通过Amplify调用Lambda函数?

来自分类Dev

从 eventbridge api 目标调用 AWS Lambda 函数 URL

来自分类Dev

用于SOAP / REST转换的AWS API Gateway和Lambda函数

来自分类Dev

Twilio函数调用Studio Rest API-Accountsid错误

来自分类Dev

了解Lambda以调用API

来自分类Dev

使用由WorkMail事件调用的AWS Lambda调用外部Web Api REST端点

来自分类Dev

制定REST API调用

来自分类Dev

从REST API调用木偶

来自分类Dev

调用-ResMethod Rest API

来自分类Dev

从aws lambda调用外部API并在lambda函数中以回调的形式重新放置

来自分类Dev

通过API Gateway v Lambda Console调用lambda函数时,请求主体序列化差异

来自分类Dev

如何通过API网关使用事件调用类型调用Lambda函数?

来自分类Dev

带 API 调用的函数

来自分类Dev

函数的 REST API 签名

来自分类Dev

从另一个Lambda函数调用具有代理集成的Lambda函数,而无需通过Api网关

Related 相关文章

热门标签

归档