DialogFlow Google Assistant的正确的fillmentMessages格式

时间:2019-05-15 10:10:38

标签: java dialogflow actions-on-google

我正在尝试使用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,但还是没用

1 个答案:

答案 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​​的更多。     您还可以检查模拟器的响应。