正确的 DialogFlow Google 助手的 fulfillmentMessages 格式

Correct fulfillmentMessages format for DialogFlow Google Assistant

我正在尝试使用 Java DialogFlow API 为 Google 助手构建 webhook 响应。我的回复在 DialogFlow 的 'Try It Now' 功能中运行良好,但 Google 助手一直说 "isn't responding right now. Try again later".

作为一项实验,我设法让 Google 助手通过使用非 webhook 响应(即通过正常的 DialogFlow Intent UI)工作。当我查看我的历史记录时,我看到工作响应如下所示:

"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 字符串作为我的文本正文,它似乎仍然不起作用。

return 使 Google 助手可以阅读的默认消息格式的正确方法是什么?我试过 simpleResponse 也没有用

以下是听到回复所需的最低回复

{
  "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 代替。 您还可以检查模拟器的响应。