如何从api获取数据并使用实现在操作中显示?

时间:2018-06-27 06:27:24

标签: node.js actions-on-google dialogflow fulfillment

如何从api(https://jsonplaceholder.typicode.com/posts/1)获取数据并如何使用实现在操作中显示?

我的代码:

function apiCall(agent){
    https.get('https://jsonplaceholder.typicode.com/posts/1', (resp) => {
       let data = '';
       // A chunk of data has been recieved.
       resp.on('data', (chunk) => {
           data += chunk;
       });

       // The whole response has been received. Print out the result.
       resp.on('end', () => {
           console.log(JSON.parse(data).explanation);
       });

   }).on("error", (err) => {
       console.log("Error: " + err.message);
   });
}

我得到一个错误:

  

在函数中:getaddrinfo ENOTFOUND jsonplaceholder.typicode.com jsonplaceholder.typicode.com:443

3 个答案:

答案 0 :(得分:3)

我已经测试过API服务器,它运作良好LINK


原因
尝试从Cloud函数访问API服务器时遇到了相同的问题。那时计费不是解决方法,因为我已经启用了计费。


解决方案

  1. Google Cloud功能不允许您在没有计费的情况下访问出站互联网访问。您只需启用计费功能 通过提供您的ATM详细信息来为项目服务 层。

  2. 您可以使用Google Cloud Function Simulator +任何本地隧道 例如ngrokserveo.net,然后将该链接添加到您的fulfillment webhook url很好的解决方案中,以达到开发目的。

答案 1 :(得分:1)

在Google GitHub上的Actions上托管了一个Developer Relations Quote sample,该演示了如何从实现Webhooks进行外部API调用。

如样本的自述文件中所述,如果您使用Cloud Functions for Firebase来部署您的履约,则需要升级计划,因为Firebase的免费层不支持进行出站网络调用。

答案 2 :(得分:0)

您想在此页面中收到什么? 我复制了您的代码并更改了

console.log(JSON.parse(data).explanation);

console.log(data);

它返回给我:

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

这就是为什么当我单击您的链接时会得到提示。

除了您不存在“说明”字段之外,我的代码没有错误。

由于我不明白该消息的意思,因此您的网站需要验证吗?