на самом деле я пытаюсь использовать Dialogflow v2 с java sdk в android.
Я уже могу делать запросы к диалоговому потоку, но я хотел отправить некоторую полезную нагрузку с моим запросом. Из-за этого я обнаружил объект Параметры запроса и уже установил для него желаемую полезную нагрузку.
Проблема в том, что у меня определены как QueryInput, так и Параметры запроса, но нет документации (или ссылок на код в исходном коде) о том, как применять параметры к входным данным, прежде чем пытаться определить намерение.
SessionsClient.create().use { sessionsClient ->
// Set the session name using the sessionId (UUID) and projectID
val session = SessionName.of(PROJECT_ID, UUID)
System.out.println("Session Path: $session")
// Set the text (input) and language code (en) for the query
val textInput = TextInput.newBuilder().setText(text).setLanguageCode(LANGUAGE_CODE)
// Build the query with the TextInput
val queryInput = QueryInput.newBuilder().setText(textInput).build()
// Set payload
val payload = "{someid: $someid}"
val queryParameters = QueryParameters.newBuilder().setPayload(Struct.parseFrom(payload.toByteArray())).build()
// (HERE I NEED TO ADD THE PARAMETERS TO INPUT)
// Performs the detect intent request
val response = sessionsClient.detectIntent(session, queryInput)
// returns the query result
return response.queryResult
}
После нескольких часов глубоких поисков мне удалось найти класс Детектинтентрекуест.
//Build the request
val request = DetectIntentRequest.newBuilder()
.setSession(session.toString())
.setQueryInput(queryInput)
.setQueryParams(queryParameters)
.build()
// Performs the detect intent request
val response = sessionsClient.detectIntent(request)
Note: if you are using other languages probably you 'll have a third parameter in detectIntent function to place your queryParameters
Для Котлина,
val queryInput1211 = QueryInput.newBuilder()
.setText(TextInput.newBuilder().setText(msg).setLanguageCode("en-US"))
.setEvent(com.google.cloud.dialogflow.v2beta1.EventInput.newBuilder()
.setName("Welcome")
.setLanguageCode("en-US")
.setParameters(
Struct.newBuilder().putFields("user_id",
Value.newBuilder().setStringValue("1234").build())
.build())
.build())
.build()
Для Java
QueryInput queryInput1211 = QueryInput.newBuilder()
.setText(TextInput.newBuilder().setText(msg).setLanguageCode("en-US"))
.setEvent(com.google.cloud.dialogflow.v2beta1.EventInput.newBuilder()
.setName("Welcome")
.setLanguageCode("en-US")
.setParameters(
Struct.newBuilder().putFields("user_id",
Value.newBuilder().setStringValue("1234").build())
.build())
.build())
.build();
Где Welcome
— имя события намерения, а user_id
— имя параметра.