microsoft/Teams-AdaptiveCards-Mobile

[Rendering][Android][CRASH] Adaptive Cards Library Crashes with Large Card Sizes with background image

rankush opened this issue ยท 1 comments

Target Platforms

Android

SDK Version

2.8.4, main branch

Application Name

Webex APP && AdaptiveCards Visualizer

Problem Description

We are experiencing an issue with the Adaptive Cards Library where it crashes when handling a specific card. This issue is reproducible in both the Webex app and the AdaptiveCards Visualizer sample app. The JSON for the problematic card is attached to this issue for reference.

Here's a high-level overview of the problem:

  1. The issue seems to originate from the Adaptive Cards Library. It occurs even when the card's JSON contains an image of a relatively small size (2-4 MB) even with a smaller resolution say 400 x 1200

  2. The specific card causing the issue has dimensions of 900 pixels (Width) x 12500 pixels (Height). The provided image is intended to be the background of the card. As we dont see that any limit is enforced in Adaptive Cards lib for card sizes, the cad should get rendered properly.

  3. But The library uses scaling logic to set the card background to match the card size. However, this scaling logic appears to have a flaw.

  4. Due to this flaw, the image (intended to be set as the background) scales up to an excessive size. In our case, the image sometimes exceeded 1 GB.

Crash Logs

--------- beginning of crash
05-08 19:23:27.077  4423  4423 E AndroidRuntime: FATAL EXCEPTION: main
05-08 19:23:27.077  4423  4423 E AndroidRuntime: Process: io.adaptivecards.adaptivecardssample, PID: 4423
05-08 19:23:27.077  4423  4423 E AndroidRuntime: java.lang.RuntimeException: Canvas: trying to draw too large(1085175364bytes) bitmap.
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:266)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:94)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at io.adaptivecards.renderer.BackgroundImageLoaderAsync$BackgroundImageDrawable.resizeBitmapForCover(BackgroundImageLoaderAsync.java:145)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at io.adaptivecards.renderer.BackgroundImageLoaderAsync$BackgroundImageDrawable.draw(BackgroundImageLoaderAsync.java:81)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.getDrawableRenderNode(View.java:23483)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.drawBackground(View.java:23412)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:23186)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22061)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:23197)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22061)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:23197)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.widget.ScrollView.draw(ScrollView.java:1869)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22061)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1246)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:23197)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22061)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22052)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:22925)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.draw(View.java:23197)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at com.android.internal.policy.DecorView.draw(DecorView.java:821)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:22061)
05-08 19:23:27.077  4423  4423 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:689)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:695)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:793)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:4670)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4381)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3600)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2328)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9087)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:832)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:942)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:201)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:288)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7872)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-08 19:23:27.079  4423  4423 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Screenshots

Gif for the flow
Screen Recording 2024-05-08 at 19 22 36

Card JSON

{
  "type": "AdaptiveCard",
  "actions": [
    {
      "data": {
        "callback_keyword": "survey_response",
        "survey_name": "TACX WEEK"
      },
      "style": "positive",
      "title": "Submit",
      "type": "Action.Submit"
    }
  ],
  "backgroundImage": {
    "url": "https://www.webex.com/content/dam/wbx/us/images/rebrand/webex-logo.png"
  },
  "body": [
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "type": "Image",
          "url": "https://www.webex.com/content/dam/wbx/us/images/rebrand/webex-logo.png"
        },
        {
          "color": "accent",
          "horizontalAlignment": "center",
          "isSubtle": true,
          "size": "extraLarge",
          "text": "TACX WEEK",
          "type": "TextBlock",
          "weight": "bolder",
          "wrap": true
        },
        {
          "text": "Hey there! ๐ŸŒŸ Thanks a ton for diving into the TAC week extravaganza with us! ๐ŸŽ‰ We hope you had a blast making new connections, trying out cool stuff, and most importantly, having a blast! ๐Ÿคฉ Now, let's keep that fun train rolling โ€“ your feedback is our fuel to make the next adventure even more awesome! ๐Ÿš€ And hey, just so you know, your answers are in incognito as a superhero in disguise โ€“ totally **anonymous**! Ready to share your thoughts? Let's do this! ๐Ÿ’ช",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "columns": [
            {
              "items": [
                {
                  "choices": [
                    {
                      "title": "MX ๐Ÿ‡ฒ๐Ÿ‡ฝ",
                      "value": "mexico"
                    },
                    {
                      "title": "RTP ๐ŸŒณ",
                      "value": "rtp"
                    },
                    {
                      "title": "RCDN ๐Ÿœ๏ธ",
                      "value": "rcdn"
                    }
                  ],
                  "id": "site",
                  "isMultiSelect": false,
                  "isRequired": false,
                  "label": "1. What site are you from? ๐Ÿ“",
                  "placeholder": "Site",
                  "style": "compact",
                  "type": "Input.ChoiceSet"
                },
                {
                  "choices": [
                    {
                      "title": "East โžก๏ธ",
                      "value": "east"
                    },
                    {
                      "title": "West โฌ…๏ธ",
                      "value": "West"
                    }
                  ],
                  "id": "shift",
                  "isMultiSelect": false,
                  "isRequired": false,
                  "label": "2. What shift are you from? ๐Ÿงญ",
                  "placeholder": "Shift",
                  "style": "compact",
                  "type": "Input.ChoiceSet"
                },
                {
                  "choices": [
                    {
                      "title": "Yes, Onsite ๐Ÿ“",
                      "value": "onsite"
                    },
                    {
                      "title": "Yes, Remote ๐Ÿ’ป",
                      "value": "remote"
                    },
                    {
                      "title": "Yes, Hybrid ๐Ÿ”„",
                      "value": "hybrid"
                    },
                    {
                      "title": "No ๐Ÿšซ",
                      "value": "no"
                    }
                  ],
                  "id": "attend",
                  "isMultiSelect": false,
                  "isRequired": false,
                  "label": "2. Were you able to attend to any of the sessions?",
                  "placeholder": "Select Option",
                  "style": "expanded",
                  "type": "Input.ChoiceSet"
                },
                {
                  "text": "Please rate each event:",
                  "type": "TextBlock",
                  "wrap": true
                }
              ],
              "type": "Column",
              "width": 1
            }
          ],
          "type": "ColumnSet"
        }
      ],
      "style": "emphasis",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Directory Photos ๐Ÿ“ธ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "directory_photos_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "directory_photos_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "good",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Your Brand Creation ๐ŸŽจ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "brand_creation_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "brand_creation_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Speed Mentoring ๐ŸŽ๏ธ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "speed_mentoring_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "speed_mentoring_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Cooking Competition โฒ๏ธ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "cooking_competition_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "cooking_competition_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "good",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "AMA with our Senior Leaders โ“",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "ama_senior_leaders_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "ama_senior_leaders_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "DM Corner ๐Ÿ“„",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "dm_corner_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "dm_corner_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "good",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Wellbeing Day / Fitness activities ๐Ÿ’ช",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "wellbeing_day_fitness_activity_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "wellbeing_day_fitness_activity_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Putt Putt Golf โ›ณ๏ธ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "putt_putt_golf_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "putt_putt_golf_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "good",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Bingo Bingo โญ๏ธ Technology Trivia",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "bingo_bingo_technology_trivia_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "bingo_bingo_technology_trivia_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "TAC Hero Awards ๐Ÿ†",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "tac_hero_awards_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "tac_hero_awards_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "good",
      "type": "Container"
    },
    {
      "items": [
        {
          "horizontalAlignment": "Center",
          "size": "Large",
          "text": "Video Games ๐Ÿ•น๏ธ",
          "type": "TextBlock",
          "wrap": true
        },
        {
          "choices": [
            {
              "title": "Informative ๐Ÿ“š",
              "value": "Informative"
            },
            {
              "title": "Fun ๐ŸŽ‰",
              "value": "Fun"
            },
            {
              "title": "I would do it again ๐Ÿ”",
              "value": "I would do it again"
            },
            {
              "title": "I learned something ๐Ÿง ",
              "value": "I learned something"
            },
            {
              "title": "This will change the way I do things โœจ",
              "value": "This will change the way I do things"
            },
            {
              "title": "N/A ๐Ÿšซ",
              "value": "N/A"
            }
          ],
          "id": "video_games_options",
          "isMultiSelect": true,
          "type": "Input.ChoiceSet"
        },
        {
          "id": "video_games_comments",
          "isMultiline": true,
          "isRequired": false,
          "label": "Any comments ๐Ÿ’ฌ",
          "maxLength": 0,
          "placeholder": "",
          "style": "text",
          "type": "Input.Text"
        }
      ],
      "spacing": "None",
      "style": "accent",
      "type": "Container"
    }
  ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.5"
}

Sample Code Language

No response

Sample Code

No response

Adaptive Cards is now a semi private repo

  • Pull requests and issue creations will no longer be accepted and will be closed. Please send all issues with Adaptive Cards to Microsoft Teams docs repo (msteams-docs)
  • Issues will be reviewed and prioritized from there
  • Source code will still be available to the public.
  • Packages will still be posted to the public.