1

在尝试从请求正文中获取 JSON 时,JSON.Parse 会混淆 JSON 元素,因此网络聊天不会将其识别为自适应卡。请帮助..

Node.JS 代码:

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);
});
};

预期的 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"
    }]
}

收到的 JSON:

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

1 回答 1

0

JSON 对象在技术上是具有无序属性的对象,因此您看到的是一个特性,而不是一个错误。

有关详细讨论,请参阅https://stackoverflow.com/a/5525820/5199616

于 2017-06-12T22:55:35.637 回答