java - Java 客户端上的 Dialogflow V2 代理版本控制
问题描述
我正在移植到 DialogFlow V2,并想尝试一下代理版本。在此处阅读:https ://cloud.google.com/dialogflow/docs/agents-versions
问题是我不知道这会如何影响凭据的配置,因为我无法在客户端库中找到任何内容。我用于身份验证的当前代码是
public DialogFlowEngine(DialogFlowConfig config) throws IOException {
this.config = config;
GoogleCredentials credentials = GoogleCredentials.fromStream(
new ByteArrayInputStream(config.getClientCredentials().getBytes())
);
this.sessionSettings =
SessionsSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build();
this.projectId = ((ServiceAccountCredentials)credentials).getProjectId();
}
然后在创建会话时:
try (SessionsClient sessionsClient = SessionsClient.create(this.sessionSettings)) {
SessionName session = SessionName.of(projectId, requestId);
...
我已经看到,如果我想使用 RAW 休息端点来使用代理版本控制功能,我必须发布到类似的 url"https://dialogflow.googleapis.com/v2beta1/projects/small-talk-dfghk/agent/environments/development/users/-/sessions/e5472b8a-9feb-43f1-8213-648215960d22:detectIntent"
但是从 api 的外观看来,这样的操作似乎无法执行,因为他反编译的 SessionName 类与这样的 URL 匹配:
private static final PathTemplate PATH_TEMPLATE = PathTemplate.createWithoutUrlEncoding("projects/{project}/agent/sessions/{session}");
有没有办法我们可以做到?否则,您将如何建议在环境(开发、质量保证、暂存、产品...)之间配置 DialogFlow?
即使我有正确的 API 调用,我仍然想知道......不同的代理版本是否意味着我们可以在每个环境中拥有不同的 Json 凭据?
谢谢你的帮助!
解决方案
您可以使用SessionName.ofProjectEnvironmentUserSessionName
它,它会像 REST api 一样接收环境名称。
推荐阅读
- html - CSS - 以 8 个为一组显示 div 的平面列表
- python - 将 YAML 文件读取为列表
- c - 尽管处理器负载达到 100%,但 OMP 并行处理并没有大大加快循环速度
- json - 无法使用 many2many 模型将查询集转换为 JSON
- node.js - 如何在节点应用程序中持久化 EventEmitter 对象?
- r - 尝试在数据框中用零替换一组数字
- tsql - 如何杀死 MS SQL 2016 tcp 监听器
- c# - 在客户端(App 端)接收 Multipart/form-data 响应
- java - 使用hibernate将数据从文件上传到mysql时减少时间
- c# - 如何删除 WPF 中的组合框?