将 json 分成轮播卡片

split json into carousel cards

我从 JSON 文件中得到结果,我想在轮播中显示它, 我该怎么做?

代码如下:

var req = http.request(options, function (res) {
    console.log('STATUS: ' + res.statusCode);
    if (res.statusCode !== 201) {
        session.send("Sorry, service is not reachable at the moment, please try again later");
    }
    //session.send(res.statusCode.toString());
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);

        var json = chunk.toString();
        var graph = JSON.parse(json);
        var attachmentList = [];
        for (var i = 0; i < graph.clauses.length; i++) {
            var obj = graph.clauses[i];
            console.log(obj);
            var clause_id;
            var clause_text;

            for (var key in obj) {
                clause_id = key;
                clause_text = obj[key].toString();
                // session.send(clause_id+"<br>"+clause_text);
            }

            let card = new botbuilder_1.HeroCard(session)
                .title(clause_id)
                .subtitle(clause_text)
                .buttons([botbuilder_1.CardAction.imBack(session, 'Mark as Relevant', 'Mark as Relevant')]);

            let msg = new botbuilder_1.Message(session);
            msg.attachmentLayout(botbuilder_1.AttachmentLayout.carousel);
            msg.attachments([card]);
            session.send(msg);

            // session.endDialog(msg); 
        }
    });
});

这是结果的屏幕截图:

您在 for 循环的每次迭代中发送一​​条消息,每条消息只有一个附件。尝试在 for 循环后发送一条消息,并为该消息提供整个附件列表。

var attachmentList = [];
for (var i = 0; i < graph.clauses.length; i++) {
    var obj = graph.clauses[i];
    console.log(obj);
    var clause_id;
    var clause_text;
    for (var key in obj) {
        clause_id = key;
        clause_text = obj[key].toString();
        // session.send(clause_id+"<br>"+clause_text);
    }
    let card = new botbuilder_1.HeroCard(session)
        .title(clause_id)
        .subtitle(clause_text)
        .buttons([botbuilder_1.CardAction.imBack(session, 'Mark as Relevant', 'Mark as Relevant')]);

    attachmentList.push(card);
}

let msg = new botbuilder_1.Message(session);
msg.attachmentLayout(botbuilder_1.AttachmentLayout.carousel);
msg.attachments(attachmentList);
session.send(msg);