1

我正在寻求您的建议,以拼凑一种有助于对 Dialogflow ES 和 CX 进行身份验证的机制,以允许从我们的工作台应用程序以流畅且防错的方式在多个代理(项目)上运行实验。工作台是用 TypeScript 编写的内部工具(使用 dialogflow RPC 节点模块),在 GCP 之外运行。我们的用户分析将相同输入(话语)发送给多个代理的结果,通常在他们的工作过程中来回切换。

通过正确的 IAM 配置,我们已经能够通过执行成功检测到意图gcloud auth application-default login,但是我们还没有找到以编程方式更新配额项目或通过google.cloud.dialogflow库指定配额项目的方法,因此我们无法修复“在项目之间轻松切换”部分。看起来篡改quota_project_idapplication_default_credentials.json 中的属性一旦经过身份验证是可行的方法(gcloud auth application-default set-quota-project <project>),但我们更愿意以编程方式执行此操作。

使用服务帐户密钥 (JSON) 可以按预期工作,这就是我们迄今为止一直在做的事情,这也是我们在 CI/CD 管道和生产中运行的代理中所做的事情。但我们的目标是减少我们与个人共享的服务帐户凭据文件的数量。理想情况下,语音/数据科学家将使用他们自己的最终用户凭据来执行实验。

我们正在寻找替代方案,以便用户只需进行一次身份验证gcloud auth application-default login,工作台将在幕后处理其余的工作,仅使用必须运行实验的项目 ID 作为附加参数。这将消除暂停实验以更新配额项目(使用set-quota-project)或GOOGLE_APPLICATION_CREDENTIALS在使用服务帐户密钥时更新变量的需要。

我们尝试的另一件事是服务帐户模拟,不幸的是,库似乎不支持google.cloud.dialogflow,所以即使我们能够使用模拟成功地将请求(使用 Curl/Postman)提交到 Dialogflow RESTful API,我们也无法在我们的代码中利用这种机制。

有没有人能够克服类似的挑战?是否有任何其他身份验证机制可以帮助我们实现这一目标?

4

0 回答 0