Как получить доступ к значениям из kotlin MutableMap <String, Value>?

Я использую 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.

Всякий раз, когда я пытаюсь получить доступ к значению ключа,

 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()это не вызывает ошибок. Я также попытался добавить зависимости protobuf в файл build.gradle, используя эту документацию, но при сборке все еще выдает указанную выше ошибку.

Было бы здорово, если бы кто-нибудь мог решить это в kotlin и дать некоторое представление о том, почему он недоступен.

0 ответов

Другие вопросы по тегам