我正在尝试使用Java DialogFlow API为Google助手构建Webhook响应。我的回复在DialogFlow的“立即尝试”功能中工作正常,但是Google助手一直在说“目前没有响应。请稍后再试”。
作为一个实验,我设法通过使用非webhook响应(即通过常规DialogFlow Intent UI)使Google Assistant正常工作。当查看“历史记录”时,我看到工作响应如下:
"queryText": "GOOGLE_ASSISTANT_WELCOME",
"action": "input.welcome",
"fulfillmentMessages": [
{
"text": {
"text": [
"[{\"type\":\"simple_response\",\"platform\":\"google\",\"textToSpeech\":\"Hello\"}]"
]
}
}
这对我来说似乎很奇怪,因为文本主体实际上是另一个JSON编码的对象(除其他字段外还包含textToSpeech)。当我这样使用Java DialogFlow API时:
List<String> texts = new ArrayList<>();
texts.add( "Foo" );
message.setText( new GoogleCloudDialogflowV2IntentMessageText().setText( texts ));
我得到了另一种格式:
"fulfillmentMessages": [
{
"text": {
"text": [ "Foo" ]
}
}
该Google助手说:
MalformedResponse: Failed to parse Dialogflow response into AppResponse because of empty speech response"
即使我尝试将编码的JSON字符串强制作为文本正文,它也似乎仍然不起作用。
返回默认消息格式以使Google Assistant能够读取它的正确方法是什么?我尝试了simpleResponse
,但还是没用
答案 0 :(得分:1)
以下是听到回复所需的最低回复
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later."
}
}
]
}
}
}
}
使用Java自然可以使用API生成所需的输出响应。 另外,如果您将basicCards或Images用于智能显示器,那么它肯定会有所帮助 而是使用API的更多。 您还可以检查模拟器的响应。