Как использовать API в действиях на Google - PullRequest
0 голосов
/ 22 сентября 2018

Я попробовал следующий код javascript, используя железнодорожный API в aog для получения названий поездов между 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 [] с правильными значениями.Но когда я пытаюсь запустить его из симулятора action-on-google, он выдает ошибку следующим образом ...

api errorRequestError: Ошибка: getaddrinfo ENOTFOUND api.railwayapi.com api.railwayapi.com:443

1 Ответ

0 голосов
/ 23 сентября 2018

Если вы пытаетесь сделать это с помощью Firebase Cloud Functions (FCF) или встроенного редактора Dialogflow (который использует FCF под обложками), наиболее вероятной причиной является то, что вы используете бесплатный уровень FCF, который неразрешить звонки вне сети Google.

Чтобы обойти это, вы можете перейти на Blaze Plan .Хотя для этого требуется наличие кредитной карты, она включает в себя бесплатный уровень, который вполне достаточен для некоторого базового тестирования и, возможно, даже очень легкого использования, когда вы находитесь в производстве.Как только вы одобрите свое действие, вы сможете получать облачные кредиты от Google, которые можно использовать для компенсации расходов, связанных с использованием облачных функций.

...