google 模拟器上的操作是否阻止了外部请求?

Are external requests blocked on actions on google simulator?

我正在开发一个带有 Dialogflow 集成的 Actions on Google 应用程序。在 Dialogflow 模拟器中使用常见请求调用进行测试时,我得到一个响应,即找到我传递的 Uri,执行并 returns 一个响应。在 Google 模拟器上的操作中执行完全相同的操作会导致此错误。

{ Error: getaddrinfo ENOTFOUND abc.eu.auth0.com abc.eu.auth0.com:443
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'abc.eu.auth0.com',
host: 'abc.eu.auth0.com',
port: 443 }

代码如下所示

let options = {
    uri: 'https://abc.eu.auth0.com/userinfo/',
    headers: {
       authorization: 'Bearer ' + _accessToken,
   }
};

request.get(options, (error, response, body) => {
    if (!error && response.statusCode === 200) {
        // output error, body, response, do stuff
    } else {
        // do other stuff
    }
});

request为请求包

那么问题来了,Actions on Google simulator/test模式有什么限制吗? (使用开发者帐户登录后,我在 phone 上与 Google 助手交谈时遇到同样的错误。

模拟器没有任何限制 - 它只是与您的 webhook 后端对话,不知道操作环境是什么。

如果您在 Dialogflow 中使用 built-in 执行编辑器,或者如果您已经部署到 Firebase Cloud Functions,那么您需要检查您使用的是哪个计划。

默认是 "spark" 计划,它是免费的,但有一个限制,即它不能访问 Google 之外的网络或网络服务。

您可以升级到 "blaze" 计划,该计划允许网络访问,但需要您注册信用卡并收取使用费。 但是,即使在 blaze 计划中,也有一个他们不会向您收费的免费套餐。此免费层通常足以进行试验、初始开发和在早期部署下使用。部署后,Google 助手会提供云积分,这也应该抵消这一点。