2

我正在使用 Kotlin 访问来自 DialogFlow 代理的响应。android控制台中的响应如下,

parameters {
  fields {
    key: "EmployeeID"
    value {
      number_value: 12345.0
    }
  }
}

在 kotlin 中,我使用 SessionClient 创建一个返回多个字段的自定义响应的函数,

fun detectIntentTexts(
  text: String,
  sessionId: String,
  languageCode: String
): TextResponse {
  val sessionsSettings = SessionsSettings.newBuilder()
    .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
    .build()
  SessionsClient.create(sessionsSettings).use {
    sessionsClient - >
      val session = SessionName.of(credentials.projectId, sessionId)
    val textInput = TextInput.newBuilder()
      .setText(text).setLanguageCode(languageCode)
    val queryInput = QueryInput
      .newBuilder().setText(textInput).build()
    val response = sessionsClient.detectIntent(session, queryInput)

    return TextResponse(response.queryResult.fulfillmentText, response.queryResult.parameters.fieldsMap)
  }
}

在另一个 Kotlin 类中,我尝试response.queryResult.parameters.fieldsMap使用 getValue(key:String) 进行访问,因为 fieldsMap 返回的类型为 MutableMap<String, Value>。

每当我尝试访问键的值时,

 Log.i("TEST",answer.parametersMap.getValue("EmployeeID").toString())

它在构建时不断抛出以下错误,

Cannot access class 'com.google.protobuf.Value'. 
Check your module classpath for missing or conflicting dependencies

注意:当我访问response.queryResult.parameters.fieldsMap.values.toString()它时,它不会引发任何错误。我还尝试使用此文档在 build.gradle 文件中添加 protobuf 依赖项,但它仍然在构建时出现上述错误。

如果有人可以在 kotlin 中解决它并提供一些关于为什么它无法访问的见解,那就太好了。

4

0 回答 0