dialogflow / dialogflow-fulfillment-nodejs

Dialogflow agent fulfillment library supporting v1&v2, 8 platforms, and text, card, image, suggestion, custom responses
Apache License 2.0
597 stars 282 forks source link

Add fulfillmentText to json when requestSource is null and a text message is found in responseMessages #336

Open cchardeau opened 3 years ago

cchardeau commented 3 years ago

Expected Behavior

When requestSource is null and one text message "bot fulfillment text" is found in multiple responseMessages, we should add fulfillmentText: "bot fulfillment text" property to json.

This fix could be useful when you are using fulfillment with Dialogflow ES. It allows to avoid confusion between real and default bot response in Dialogflow ES history.

Example

Raw interaction log

{
  ...
  "fulfillmentMessages": [
    {
      "payload": {
        "barge-in": false
      }
    },
    {
      "text": {
        "text": [
          "bot fulfillment text"
        ]
      }
    }
  ],
  "fulfillmentText": "bot fulfillment text", // <= HERE
  "webhookStatus": {
    "webhookStatus": {
      "message": "Webhook execution successful"
    },
    "webhookUsed": true
  }
  ...
}

Dialogflow ES history

Use case

The bot says: bot fulfillment text In history, Dialogflow administrator could read: bot fulfillment text Dialogflow administrator is happy :slightly_smiling_face:

Actual Behavior

Currently, a difference could exist between heard bot response and history bot reponse.

Example

Raw interaction log

{
  ...
  "fulfillmentMessages": [
    {
      "payload": {
        "barge-in": false
      }
    },
    {
      "text": {
        "text": [
          "bot fulfillment text"
        ]
      }
    }
  ],
  "webhookStatus": {
    "webhookStatus": {
      "message": "Webhook execution successful"
    },
    "webhookUsed": true
  }
  ...
}

fulfillmentText property is not present in response because responseMessages contains two elements : one text message and one payload message.

Dialogflow ES history

Use case

The bot says: bot fulfillment text In history, Dialogflow administrator could read: bot default text A difference exists between what we could read in Dialogflow ES history and what user heard. Dialogflow administrator is not happy :slightly_frowning_face:

Steps to Reproduce the Problem

Specifications