如何在 Java 中添加未知字段“21”的 FieldMask

How to add FieldMask of unknown field '21' in Java

我将 dialogflow-es 与 Java 库 (v2) 一起使用。

而且我发现 Intent 对象没有“将此 intent 设置为对话结束”的方法。

我发现 'end of conversation' 字段的名称是 21,值是 1

所以,我用 .addPaths("unknown_fields") 创建了 UnknownFieldSetFieldMask

但是在更新意图之后,什么都没有改变。

当我从更新意图中删除 .setFieldMask(FieldMask fieldMask) 时,值已更改。

如何将未知字段 21 更改为 FieldMask

UnknownFieldSet unknownFieldSet = UnknownFieldSet.newBuilder()
        .addField(21, Field.newBuilder().addVarint(1).build())
        .build();

FieldMask updateFieldMask = FieldMask.newBuilder()
        .addPaths("unknown_fields")
        .build();

Intent updateIntent = Intent.newBuilder()
        .setName(newIntent.getName())
        .setUnknownFields(unknownFieldSet)
        .build();

听起来您正在寻找 FieldMaskUtil.merge and FieldMaskUtil.fromFieldNumbers

如果这不起作用,那么您正在做的事情可能是不可能的 - 使用 FieldMask 而不是直接使用字段编号。