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