我正在使用 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 中解决它并提供一些关于为什么它无法访问的见解,那就太好了。