Dialogflow v2 android sdk - 将 QueryParameters 添加到 QueryInput

Dialogflow v2 android sdk - Add QueryParameters to QueryInput

我实际上是在 android 中尝试将 Dialogflow v2 与 java sdk 一起使用。

我已经可以对 dialogflow 进行查询,但我想通过查询发送一些有效负载。 因此,我发现了 QueryParameters 对象,并且我已经用我想要的有效负载设置了它。

问题是,我定义了 QueryInputQueryParameters 但没有文档(或源代码中的代码引用)关于如何在尝试检测意图之前将参数应用于输入。

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
        }

经过数小时的深入搜索,我设法找到了 DetectIntentRequest class。

            //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

对于 Kotlin,

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 作为参数名称