Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
显示CardAction和消息(node.js SDK-skype频道)_Node.js_Botframework - Fatal编程技术网

显示CardAction和消息(node.js SDK-skype频道)

显示CardAction和消息(node.js SDK-skype频道),node.js,botframework,Node.js,Botframework,我正在使用Node.js SDK为skype创建一个bot,使用microsoft bot框架 我正在尝试一些不同的行为,我遇到了一些问题 例如,我创建了一组缩略图卡,每个缩略图卡具有图像、文本和3个按钮。一个按钮打开一个网页。另外两个用于提示。选择继续对话。 问题是,我认为我需要显示标签,提示才能工作。 对吗? 因为标签可能很长/或者用户再次看到他按下的内容可能没有任何意义 我尝试粘贴一些代码,以便更好地解释: bot.dialog('/mydialog', [ function (s

我正在使用Node.js SDK为skype创建一个bot,使用microsoft bot框架

我正在尝试一些不同的行为,我遇到了一些问题

例如,我创建了一组缩略图卡,每个缩略图卡具有图像、文本和3个按钮。一个按钮打开一个网页。另外两个用于提示。选择继续对话。 问题是,我认为我需要显示标签,提示才能工作。 对吗? 因为标签可能很长/或者用户再次看到他按下的内容可能没有任何意义

我尝试粘贴一些代码,以便更好地解释:

bot.dialog('/mydialog', [
    function (session) {
    // Ask the user to select an item from a carousel.
    var msg = new builder.Message(session)
        .textFormat(builder.TextFormat.xml)
        .attachmentLayout(builder.AttachmentLayout.carousel)
        .attachments([
            new builder.ThumbnailCard(session)
                .title("Card number 1")
                .text("Description first card")
              .images([
                builder.CardImage.create(session, "https://www.example.org/img1.gif")
                      .tap(builder.CardAction.showImage(session, "ttps://www.example.org/img1.gif")),
             ])
                .buttons([
                    builder.CardAction.openUrl(session, "https://google.com", "Website"),
                    builder.CardAction.imBack(session, "select:100", "button 1"),
                    builder.CardAction.imBack(session, "select:101", "Button2")

                ]),
            new builder.ThumbnailCard(session)
                .title("Card 2")
                .text("Description card 2")
                .images([
                    builder.CardImage.create(session, "https://image.jpg")
                        .tap(builder.CardAction.showImage(session, "https://image.jpg")),
                ])
                .buttons([
                    builder.CardAction.openUrl(session, "https://google.com", "Website"),
                    builder.CardAction.imBack(session, "select:200", "button3"),
                    builder.CardAction.imBack(session, "select:201", "button4")
                ]),
           ]);

    builder.Prompts.choice(session, msg, "select:100|select:101|select:200|select:201");
 },
function (session, results) {
    var action, item;
    var kvPair = results.response.entity.split(':');
    switch (kvPair[0]) {
        case 'select':
            action = 'selected';
            break;
    }
    switch (kvPair[1]) {
        case '100':
            item ="/dialog1";
            break;
        case '101':
            item ="/dialog2";
            break;
        case '200':
            item ="/dialog3";
            break;
        case '201':
            item ="/dialog4";
            break;

    }

           session.beginDialog(item);
} 

]);

在您的情况下,最好使用对话框操作。当按下卡中的按钮时,它将启动相应的对话框。完成后,它将返回到当前对话框。请注意,显示后,您可以随时按下卡中的按钮。因此,它可能在任何时候发生,这就是为什么对话框操作在这里是一个更好的选择

bot.beginDialogAction("select:100:action:just:unique:name", 
      "/dialog1", { matches: "select:100"});
bot.beginDialogAction("select:101:action:just:unique:name", 
      "/dialog2", { matches: "select:101"});
// and so on.
请注意,如果您不想在聊天室中显示
选择:100
,您可以使用
builder.CardAction.postBack
而不是
imBack
(并非所有平台都支持)。

你好,谢尔盖,非常感谢你的回答。你说的对,它可以随时按下,所以这可能是个问题。问题是他们想把按钮放在卡里面。。我会按照建议尝试回发,谢谢!