如何解决无法从node.js上托管的网站向Google Dialogflow发送多条消息
我正在玩Google Dialogflow,并在连接到我们的Google Dialogflow实例的Amazon EC2实例上设置了一个nodejs。我基本上使用了Building a client-side web app which streams audio from a browser microphone to a server.中的修改示例。我正在使用以下Google身份验证,以通过EC2实例在本地连接到Dialogflow。
MyMethod5()
当我在计算机上本地运行它时,它可以按预期工作。但是,当我在EC2实例上执行完全相同的操作时,对于发送到Google Dialogflow的第一个查询,它仍然可以正常工作,但是随后的所有调用都返回以下错误。
(节点:13650)UnhandledPromiseRejection警告:错误:7 PERMISSION_DENIED:您的应用已通过最终用户身份验证 来自Google Cloud SDK或Google Cloud Shell的凭据 dialogflow.googleapis.com不支持。我们推荐 在gcloud中配置记帐/ quota_project设置或使用 通过auth / impersonate_service_account设置的服务帐户。 有关服务帐户以及如何在中使用它们的更多信息 您的应用程序,请参见https://cloud.google.com/docs/authentication/。
让我感到困惑的是,当我在本地运行它时,这不是问题,当我在EC2实例上使用相同的Google身份验证和示例网页时,这也不成问题;第一个查询从Dialogflow返回了预期的响应,但是任何其他查询都会导致上述错误。
解决方法
我弄清楚了问题所在。我正在使用sudo在EC2实例上启动服务器,该实例不访问环境变量,例如GOOGLE_APPLICATION_CREDENTIALS。我只需要一个简单的sudo -E标志集。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。