首页 > 解决方案 > 将 json 拆分为轮播卡片

问题描述

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

这是结果的屏幕截图:

在此处输入图像描述

标签: javascriptnode.jsbotframeworkchunks

解决方案


您在 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);

推荐阅读