Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过在Microsoft Bot Framework中循环文件动态创建卡_Node.js_Bots_Botframework - Fatal编程技术网

Node.js 通过在Microsoft Bot Framework中循环文件动态创建卡

Node.js 通过在Microsoft Bot Framework中循环文件动态创建卡,node.js,bots,botframework,Node.js,Bots,Botframework,我一直在试用Microsoftbot.dialog(“showShirts” function (session) { var msg = new builder.Message(session); msg.attachmentLayout(builder.AttachmentLayout.carousel) msg.attachments([ new builder.HeroCard(session) .title("Classi

我一直在试用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://petersapparel.parseapp.com/img/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://petersapparel.parseapp.com/img/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
我的问题不是手动键入new builder.HeroCard()…如何创建一个循环来从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);

将其包装在for/forEach调用中?嘿@EzequielJadib我尝试将“new builder.HeroCard()…”包装在forEach中,并返回一个空的附件数组。
{“type”:“message”,“attachmentLayout”:“carousel”,“attachments”:[],“locale”:“en-US”,“localTimestamp”:“2017-07-24T20:26:31.414Z”,“from”:{“id”:“0db08g0j3blgl1jfmc”,“name”:“Bot”},“recipient”:{“id”:“default user”,“name”:“user”},“inputHint”:“acceptingput”,“id”:null,“replyToId”:“1kf4ad6jjihlk7k73”}
请添加新代码。您的代码错误,您没有向数组添加任何内容。我将发布答案。