将参数添加到DialogFlow Java API的QueryInput上的EventInput上

时间:2019-04-02 12:36:23

标签: java android protocol-buffers dialogflow

我正在尝试在EventInput对象中设置参数,以便将其发送到QueryInput内部并检测Intent。我正在使用Java版本com.google.cloud:google-cloud-dialogflow:0.85.0-alpha的DialogFlow V2Beta1 API。我知道基于
的json预期格式 Custom Events文档,但是所有可用的方法对我来说都不起作用。其他语言的相关问题也没有显示:set parameters in EventInput in Dialogflow V2 API。我正在丢失有关protobuf模式的东西吗? 我的参数如下: enter image description here

我已经尝试了下面的代码,但是没有用,服务器的响应始终询问“ location_user是什么?”,这意味着该参数丢失了。在DialogFlow V2上会发生相同的问题。

queryInput = QueryInput.newBuilder()
                        .setEvent(
                                EventInput.newBuilder()
                                        .setName("REVISION")
                                        .setParameters(
                                                Struct.newBuilder()
                                                        .putFields("location_user",
                                                                Value.newBuilder()
                                                                        .setStringValue("Campinas")
                                                                        .build())
                                                        .build()
                                        )
                                        .setLanguageCode(config.getLanguage()
                                        )
                        )
                        .build();

输出json:

name: "REVISION"
parameters {
  fields {
    key: "location_user"
    value {
      string_value: "Campinas"
    }
  }
}
language_code: "pt-BR"

1 个答案:

答案 0 :(得分:1)

您的代码似乎是正确的。 问题出在您的Intent配置中。

来自dialogflow docs

  

要引用参数表中的事件参数或响应,   使用以下格式:#event-name.parameter-name。

在您的示例中:将#REVISION.location_user放入“参数”表的“值”列中。

我已经检查了您的代码,它可以正常工作,请在下面找到我的Intent配置

sample intent