Thursday, 1 June 2017

JSON payload for Adaptive cards gets jumbled in body of http request

While trying to get the JSON from the body of a request, JSON.Parse jumbles the JSON elements, hence the webchat does not recognize it as an adaptive card.. Please help..

Node.JS Code:

var msgContent = {};
msgContent = getjson(function(resb){});
var msg = new builder.Message(session)
.addAttachment(msgContent);
session.endDialog(msg);

function getjson(callback){
request.JSON = true;
request.post("https://someapi.web.net",
function (error, response, body){
var resb = {};
resb = JSON.parse(body);
console.log(resb);
callback(resb);
});
};

Intended JSON:

{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
    "type": "AdaptiveCard",
    "body": [{
        "type": "ColumnSet",
        "columns": [{
                "type": "Column",
                "size": 2,
                "items": [{
                        "type": "TextBlock",
                        "text": "Tell us about yourself...",
                        "weight": "bolder",
                        "size": "large"
                    },
                    {
                        "type": "TextBlock",
                        "text": "We just need a few more details to get you booked for the trip of a lifetime!",
                        "isSubtle": true,
                        "wrap": true
                    },
                    {
                        "type": "TextBlock",
                        "text": "Don't worry, we'll never share or sell your information.",
                        "isSubtle": true,
                        "wrap": true,
                        "size": "small"
                    },
                    {
                        "type": "TextBlock",
                        "text": "Your name",
                        "wrap": true
                    },
                    {
                        "type": "Input.Text",
                        "id": "myName",
                        "placeholder": "Last, First"
                    },
                    {
                        "type": "TextBlock",
                        "text": "Your email",
                        "wrap": true
                    },
                    {
                        "type": "Input.Text",
                        "id": "myEmail",
                        "placeholder": "youremail@example.com",
                        "style": "email"
                    },
                    {
                        "type": "TextBlock",
                        "text": "Phone Number"
                    },
                    {
                        "type": "Input.Text",
                        "id": "myTel",
                        "placeholder": "xxx.xxx.xxxx",
                        "style": "tel"
                    }
                ]
            },
            {
                "type": "Column",
                "size": 1,
                "items": [{
                    "type": "Image",
                    "url": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Diver_Silhouette%2C_Great_Barrier_Reef.jpg",
                    "size": "auto"
                }]
            }
        ]
    }],
    "actions": [{
        "type": "Action.Submit",
        "title": "Submit"
    }]
}

Received JSON:

{'$schema': 'http://adaptivecards.io/schemas/adaptive-card.json',
content:
{ actions: [ [Object] ],
     body: [ [Object] ],
     type: 'AdaptiveCard' },
  contentType: 'application/vnd.microsoft.card.adaptive' }



via Ramakrishnan S

No comments:

Post a Comment