DialogFlow: почему этот ответ Webhook не работает с «пустым речевым ответом»

Почему этот конкретный ответ веб-перехватчика (передается DialogFlow обратно в Google Assistant)

    {
      "fulfillmentMessages" : [ {
        "payload" : {
          "google" : {
        "richResponse" : {
          "items" : [ {
            "simpleResponse" : {
              "textToSpeech" : "And are you male or female?"
            }
          } ]
        },
        "expectUserResponse" : true
          }
        },
        "text" : {
          "text" : [ "And are you male or female?" ]
        }
      }, {
        "quickReplies" : {
          "quickReplies" : [ "Male", "Female" ]
        }
      } ],
      "fulfillmentText" : "And are you male or female?",
      "outputContexts" : [ ... ]
    }

Ошибка как:

"MalformedResponse: Failed to parse Dialogflow response into AppResponse because of empty speech response" 

person Richard Kennard    schedule 15.05.2019    source источник


Ответы (1)


В случае Google Assistant ответы не являются частью fulfillmentMessages, а находятся в объекте payload, который должен располагаться на верхнем уровне вашего ответа.

Обратите внимание, что quickReplies и text действительны для сообщений выполнения Dialogflow, но не для Google Assistant. Вместо этого вы должны использовать поля simpleResponse и suggestions и поместить их в ответ.

Так, например, вот ответ для Google Assistant, который состоит из чипов предложений и простого ответа:

{
  payload: {
    google: {
      richResponse: {
        items: [{
          simpleResponse: {
            textToSpeech: "Are you male or female"
          }
        }],
        suggestions: [
          { title: 'Male' },
          { title: 'Female' }
        ]
      }
    }
  },
  outputContexts: [...]
}

Для сообщений выполнения Dialogflow (например, в консоли Dialogflow) это было бы примерно так:

{
  fulfillmentMessages: [
    { text: { text: ['Are you male or female'] } },
    { quickReplies: { quickReplies: ['Male', 'Female'] } } 
  ],
  outputContexts: [...]
}

Надеюсь, это поможет.

person Thomas Lombart    schedule 16.05.2019