如何在Google行动中使用API

时间:2018-09-22 20:41:41

标签: actions-on-google

我尝试了以下javascript代码,在aog中使用了铁路API来获取2个车站之间的火车名称。

train : function(conv,src,dst) {
const options={
    method:'GET',
    url : `https://api.railwayapi.com/v2/between/source/${src}/dest/${dst}/date/23-09-2018/apikey/<api_key>/`,
    json : true
};
var data=[];
return rp(options)
    .then(function(parseBody){

    for(var i=0;i<2;i++){
        data.push(parseBody.trains[i].name);

    }
    console.log(data);
    return conv.ask(data[0] + data[1]);
}).catch(err=>{
    console.log("api error" + err);
});
}

当我使用终端(节点filename.js)在计算机上运行它时,它将显示具有正确值的data []数组。但是,当我尝试从Google行动模拟器上运行它时,发现了如下错误...

  

api errorRequestError:错误:getaddrinfo ENOTFOUND api.railwayapi.com api.railwayapi.com:443

1 个答案:

答案 0 :(得分:0)

如果您尝试使用Firebase Cloud Functions(FCF)或Dialogflow内置编辑器(在幕后使用FCF)执行此操作,则最可能的原因是您使用的是FCF的免费层,而没有允许Google网络之外的电话。

您可以升级到Blaze Plan来解决此问题。虽然这确实需要使用信用卡,但它包含一个免费层,足以进行一些基本测试,甚至在生产后甚至很少使用。在您的操作获得批准后,您将有资格从Google获得receive cloud credits的证明,可以用来抵消与使用Cloud Functions相关的费用。