【问题标题】:split json into carousel cards将 json 拆分为轮播卡片
【发布时间】:2019-05-08 05:03:01
【问题描述】:

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

结果截图如下:

【问题讨论】:

  • 让我看看我是否明白。您将在 HTTP 请求的结果中获取该 JSON,并且您希望将条款数组中的每个对象转换为卡片,然后在轮播中显示所有这些卡片。对吗?
  • 请提供您用于生成轮播的代码,以便我们查看您尝试过的内容以及需要帮助的内容。
  • @KyleDelaney 我已成功从 JSON 中检索,现在如何将所有 HeroCard 合并为轮播?我更新了截图和源代码
  • var json=chunk.toString(); var graph = JSON.parse(json);您如何假设您的块是有效的 json?

标签: javascript node.js botframework chunks


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多