Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java API从Dialogflow CX中检测意图并获取代理响应作为音频和文本?_Java_Dialogflow Cx - Fatal编程技术网

如何使用Java API从Dialogflow CX中检测意图并获取代理响应作为音频和文本?

如何使用Java API从Dialogflow CX中检测意图并获取代理响应作为音频和文本?,java,dialogflow-cx,Java,Dialogflow Cx,我正在尝试使用JavaAPI使用DialogFlowCX开发一个简单的语音机器人 这些是我在SpringBoot2.4.3项目中的依赖项 。。。 com.google.cloud 作为起点,到目前为止,一切似乎都进展顺利。。除了最重要的事情 当我向我的代理发送文本或事件时,它检测到意图,我得到响应,但没有音频输出。因此,似乎没有执行文本到语音转换 我执行请求的方式如文档示例所示: QueryInput queryInput = QueryInput .newBui

我正在尝试使用JavaAPI使用DialogFlowCX开发一个简单的语音机器人

这些是我在SpringBoot2.4.3项目中的依赖项

。。。
com.google.cloud
作为起点,到目前为止,一切似乎都进展顺利。。除了最重要的事情

当我向我的代理发送文本或事件时,它检测到意图,我得到响应,但没有音频输出。因此,似乎没有执行文本到语音转换

我执行请求的方式如文档示例所示:

QueryInput queryInput = QueryInput
                .newBuilder()
                .setLanguageCode("es-ES")
                .setText("hola")
                .build();

DetectIntentRequest request = DetectIntentRequest.newBuilder()
                .setSession(sessionName.toString())
                .setQueryInput(queryInput)
                .build();

DetectIntentResponse response = sessionsClient.detectIntent(request);

答复:

{
“检测响应”:{
“文本”:“你好”,
“语言代码”:“es”,
“响应消息”:[
{
“文本”:{
“文本”:[
“布宜诺斯艾利斯!”
]
}
},
{
}
],
“当前页面”:{
“名称”:“项目/测试项目/地点/全局/代理/9effb8aa-6b62-4fe6-9fd5-2f5e87265ee7/flows/00000000-0000-0000-00000000/pages/起始页”,
“displayName”:“起始页”
},
“意图”:{
“名称”:“项目/测试项目/地点/全球/代理/9effb8aa-6b62-4fe6-9fd5-2f5e87265ee7/intents/00000000-0000-0000-00000000”,
“displayName”:“默认欢迎意图”
},
“意向检测信心”:1.0,
“诊断信息”:{
“执行顺序”:[
{
“步骤1”:{
“初始状态”:{
“流动状态”:{
“版本”:0.0,
“页面状态”:{
“状态”:“进入页面”,
“名称”:“起始页”
},
“名称”:“默认启动流”
},
“匹配内容”:{
“得分”:1.0分,
“类型”:“NLU”,
“主动”:正确,
“DisplayName”:“默认欢迎意图”,
Id:“00000000-0000-0000-0000-000000000000”
}
},
“类型”:“初始状态”
}
},
{
“第2步”:{
“类型”:“状态机”,
“状态机”:{
“流动状态”:{
“版本”:0.0,
“名称”:“默认启动流”,
“页面状态”:{
“名称”:“起始页”,
“状态”:“转换路由”
}
},
“TriggeredIntent”:“默认欢迎意图”
}
}
},
{
“步骤3”:{
“功能执行”:{
“答复”:[
{
“文本”:{
“修订文本”:[
“布宜诺斯艾利斯!”
],
“文本”:[
“布宜诺斯艾利斯!”
]
},
“responseType”:“处理程序提示”,
“源”:“虚拟_代理”
}
]
},
“类型”:“功能执行”
}
},
{
“步骤4”:{
“类型”:“状态机”,
“状态机”:{
“流动状态”:{
“版本”:0.0,
“页面状态”:{
“名称”:“起始页”,
“状态”:“转换路由”
},
“名称”:“默认启动流”
}
}
}
}
],
“替代匹配意图”:[
{
“主动”:正确,
“类型”:“NLU”,
“Id”:“00000000-0000-0000-0000-000000000000”,
“DisplayName”:“默认欢迎意图”,
“分数”:1.0
}
],
“过渡目标链”:[
],
“触发的转换名称”:[
“9db835de-3e94-4a2a-9b8d-4EDA00339E5A”
]
},
“匹配”:{
“意图”:{
“名称”:“项目/测试项目/地点/全球/代理/9effb8aa-6b62-4fe6-9fd5-2f5e87265ee7/intents/00000000-0000-0000-00000000”,
“displayName”:“默认欢迎意图”
},
“resolvedInput”:“你好”,
“匹配类型”:“意图”,
“信心”:1.0
}
}
}
在Flow对话框中,有一个启用自动文本到语音的选项,因此输出音频包含在DetectinentResponse中,但我在CX中看不到任何类似的选项

我在谷歌上做了几次搜索,但都找不到任何有用的东西

因此,问题是:如何使用JavaAPI从Dialogflow CX检测意图并获取代理响应作为音频和文本

一个示例代码应该很棒

提前谢谢你

根据

“如果客户端希望接收音频响应,它还应该 包含输出\音频\配置。“

即使我没有使用SteamingDetectinent,为了在响应中接收音频,也必须添加“OutputAudioConfig”

然后,代码应该是这样的:

DetectIntentRequest request = DetectIntentRequest.newBuilder()
                .setSession(sessionName.toString())
                .setQueryInput(queryInput)
                .setAudioEncoding(
                   OutputAudioEncoding.OUTPUT_AUDIO_ENCODING_MP3)
                        .build())
                .build();

DetectIntentResponse response = sessionsClient.detectIntent(request);
响应还将包含我正在寻找的输出音频

{
  "outputAudio": "//NExAAAAANIAAAAALYwEAA......THE AUDIO ...ngAUYYAP/",
  "outputAudioConfig": {
    "audioEncoding": "OUTPUT_AUDIO_ENCODING_MP3"
  }
}
我希望它对某人有用

谢谢大家!