Search code examples
dialogflow-esgoogle-homegoogle-assist-api

Dialogflow v2 API - cards not shown in the simulator


I've a webhook for fulfillment. Below is the code that's responding back

  let result_obj = {
    "fulfillmentText": "This is a text response",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "this is test"
          ]
        }
      },
      {
        "card": {
          "title": "card title",
          "subtitle": "card text",
          "imageUri": "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
          "buttons": [
            {
              "text": "button text",
              "postback": "https://assistant.google.com/"
            }
          ]
        }
      }
    ]
}

Below is the result from dialogflow GUI

enter image description here

Below is what I get when I run from the simulator or from the Google Assistant application on the Android phone

enter image description here

Both the simulator and phone are not showing the cards. Am I missing something obvious here?


Solution

  • For rich responses like cards to show on Google Assistant you have to use the payload part of response JSON, here is an example:

    {
        "fulfillmentText": "This is a text response",
        "fulfillmentMessages": [],
        "source": "example.com",
        "payload": {
            "google": {
                "expectUserResponse": true,
                "richResponse": {
                    "items": [
                        {
                            "simpleResponse": {
                                "textToSpeech": "This is a Basic Card:"
                            }
                        },
                        {
                            "basicCard": {
                                "title": "card title",
                                "image": {
                                    "url": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
                                    "accessibilityText": "Google Logo"
                                },
                                "buttons": [
                                    {
                                        "title": "Button Title",
                                        "openUrlAction": {
                                            "url": "https://www.google.com"
                                        }
                                    }
                                ],
                                "imageDisplayOptions": "WHITE"
                            }
                        }
                    ]
                }
            }
        },
        "outputContexts": [],
        "followupEventInput": {}
    }
    

    Check out this github repo for all rich-responses' JSON formats.