You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dialogflow V2 Android Java SDK:如何将QueryParameters添加至QueryInput

在Dialogflow V2 Java SDK中为查询添加自定义Payload参数

嘿,我知道你卡在哪了!你已经搞定了QueryInput和QueryParameters的创建,但没找到把两者结合起来的方式——其实问题出在detectIntent的调用方式上,你用的是简化版的重载方法,没法直接传入参数。咱们得换个方式,构建完整的DetectIntentRequest对象来把所有信息打包进去。

下面是修改后的完整代码,关键步骤我标出来了:

SessionsClient.create().use { sessionsClient -> 
    // 设置会话名称
    val session = SessionName.of(PROJECT_ID, UUID)
    System.out.println("Session Path: $session")
    
    // 创建文本输入
    val textInput = TextInput.newBuilder()
        .setText(text)
        .setLanguageCode(LANGUAGE_CODE)
        .build() // 别忘了调用build完成构建
    
    val queryInput = QueryInput.newBuilder()
        .setText(textInput)
        .build()
    
    // 注意:JSON字符串要符合规范,键和值都得用双引号包裹
    val payload = "{\"someid\": \"$someid\"}"
    val queryParameters = QueryParameters.newBuilder()
        .setPayload(Struct.parseFrom(payload.toByteArray()))
        .build()
    
    // 关键一步:构建完整的请求对象,把参数添加进去
    val detectIntentRequest = DetectIntentRequest.newBuilder()
        .setSession(session.toString()) // 这里需要传入会话的字符串形式
        .setQueryInput(queryInput)
        .setQueryParameters(queryParameters) // 就是这里把自定义参数关联到请求中
        .build()
    
    // 发送完整的检测意图请求
    val response = sessionsClient.detectIntent(detectIntentRequest)
    return response.queryResult 
}

几个要注意的小细节:

  • 你之前的TextInput.newBuilder()没调用build(),我帮你补上了,不然会导致输入对象不完整
  • Payload的JSON字符串必须严格符合语法规范,键和字符串值都要用双引号,否则Struct.parseFrom会解析失败
  • 创建DetectIntentRequest时,setSession需要传入会话的字符串形式,不能直接传SessionName对象

这样修改后,你的自定义Payload就会随着查询一起发送给Dialogflow啦!

内容的提问来源于stack exchange,提问作者BLDD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:49:17