【问题标题】:How to parse fullfilment response from dialogflow correctly in java?java - 如何在java中正确解析来自dialogflow的完整响应?
【发布时间】:2020-08-06 02:36:37
【问题描述】:

正如您在 Dialogflow 中所知道的,当我们使用履行时,单个响应中可以有多种响应,例如基本卡片、建议、简单响应、链接建议等。如何正确解析此响应,以便我们可以有一个明确的 Object/JSONObject 来区分以后使用的每种类型的响应。我在想有什么办法可以把它解析成这样的

{
  simpleRespond:[{text:"Hello},{text:hi}],
  basicCard:[{title:"MyCard",subTitle:"When I was in school",image:{text:"hi",URL:"photo.jpg"}}],
  suggestion:[{text:"banana"},{text:"Apple"}]
  and other response
}

谢谢

【问题讨论】:

    标签: java google-cloud-platform dialogflow-es dialogflow-es-fulfillment


    【解决方案1】:

    要知道如何正确填写webhook response,包含多个消息和不同类型,我认为您可以关注fulfillment_messages[] field

    请注意,我正在使用 WebhookResponse V2 RPC reference

    可以看到fulfillment_messages[]字段可以包含Messageobjects的列表,其结构如下:

    {
      "text": {
        "text": [
          "Text response from webhook"
        ]
      }
    }
    

    其中text 对象是一个丰富的响应消息,并且只能是reference 中指定的一个。

    基于此,您可以从 WebhookResponse 对象中准备 fulfillment_messages[] 字段,如下所示:

    {
      "fulfillment_messages": [
        {
          "text": {
            "text": [
              "Message object sample 1"
            ]
          }
        },
        {
          "card": {
            "title": "card title",
            "subtitle": "Message object sample 2"
          }
        },
        {
          "text": {
            "text": [
              "Message object sample 3"
            ]
          }
        }
      ]
    }
    

    注意:使用此列表的实际最终结果以及 Dialogflow 的处理方式可能不是您想要的,因此我建议您进行一些测试以了解 Dialogflow 将如何处理处理它们。据我所知,Dialogflow 可能会在这里做几件事,它可能会尝试将它们放在一起,或者它可能会选择一条随机消息。

    【讨论】:

      猜你喜欢
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多