我正在基于Node.js的服务器中实现dialogflow v2 api。 设置就像-我的服务器从最终用户那里接收查询并调用dialogflow v2 api,在从dialogflow获取响应后,它将响应发送回用户。
要将请求发送到dialogflow api,我需要设置名为GOOGLE_APPLICATION_CREDENTIALS的env变量,该变量将指向生成的服务帐户密钥的json文件。
情况是,我有多个漫游器,因此有多个与它们连接的密钥。
在这种情况下,根据发送请求的机器人,我正在考虑更改请求到达的环境变量。
我的问题是-
这是处理这种情况的正确方法吗?
如果两个请求同时到达,将会发生什么情况?在这种情况下,它们是否会出现混合匹配或环境变量冲突的问题?
谢谢。
答案 0 :(得分:0)
我不会为每个请求更改环境变量。如您所述,身份验证特定于给定的请求,而环境变量应用于存储在对“环境”提出的所有请求之间共享的配置元素。
一种常见方法是分别指定服务帐户的路径(可以使用服务帐户文件的路径来初始化一个dialogflow客户端):
layout_widht="200dp"
-直接从答案https://stackoverflow.com/a/50546430开始编码。另请参阅Google SessionsClient docs。
因此,当请求进入时,请查看请求的某些参数以确定要使用的身份验证,然后使用该身份验证文件的路径初始化客户端。另外,不用说,但是要保护那些文件,例如密码(不要将其提交到公共仓库等)。
如果您发现自己正在管理很多秘密,或者需要经常更改或更新它们,则可以考虑使用一项服务来为您解决此问题,例如GCP的密钥管理系统(https://cloud.google.com/kms/)可以进行密钥轮换/管理更容易处理。 GCP blog post on service account management。
对于小型项目,指定文件路径应该可以正常工作。