Dialogflow v2 android sdk — добавить QueryParameters в QueryInput

на самом деле я пытаюсь использовать 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
        }
0
0
460
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

После нескольких часов глубоких поисков мне удалось найти класс Детектинтентрекуест.

            //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 — имя параметра.

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