如何解决 Skype 频道中显示英雄卡和表单流的问题?

How to resolve the issue of Displaying Hero Cards and Form Flow in Skype Channel?

我正在研究机器人框架技术,在其中一个项目中,我实现了英雄卡片和缩略图卡片的代码。

在我添加了上述概念的代码之后,接下来我在 Bot Framework Channel Emulator 中测试它工作正常并成功显示英雄卡。但是在我将我的代码发布到 azure 并将 skype 频道添加到我的 bot 之后,现在我开始与我的 bot 聊天以显示英雄卡图像,但它没有显示它显示的任何英雄卡图像,如下面的屏幕截图所示。

类似地,我实现了表单流概念它在 Bot Emulator 中工作正常,但它在 Skype 频道中不起作用它显示与上图相同的问题。

请告知如何解决此问题。 我认为 Skype 中可能存在显示 Hero Card 和 Form Flow 对话框的错误。

普拉迪普

这不是 Skype 中的错误,而是缺少的功能。普通的 Skype 客户端(桌面、网络、移动)尚未更新以包含 HeroCard,因此无法显示,除了 iOS 个(参见 http://blogs.skype.com/2016/07/20/skype-6-20-for-ios-find-bots-improved-notifications-and-chat/

正如 botbuilder 项目所暗示的那样,您可以使用 {listStyle: builder.ListStyle["inline"]} 作为解决方法,将您的内容显示为选项列表而不是卡片。参见:https://github.com/Microsoft/BotBuilder/issues/720.

否则,您现在所能做的就是要么安装包含该功能的开发人员版本,要么等待更新版本(应该很快就会发布)。

有效。 Skype 是另一个渠道。在大多数情况下,使用 bot 框架开发的代码可以在 Skype 上运行,某些功能需要特定于 Skype。因此,为了让您的卡正常工作,您必须用 Skype 替换 botbuilder。请参阅下面的示例,该示例取自 Microsoft hero card 并进行修改以在 Skype 中工作 skype hero card result

Replace builder by skype
//var builder = require('botbuilder');

var skype = require('botbuilder');

var msg = new skype.Message(session);
    msg.attachmentLayout(skype.AttachmentLayout.carousel)
    msg.attachments([
        new skype.HeroCard(session)
            .title("Classic White T-Shirt")
            .subtitle("100% Soft and Luxurious Cotton")
            .text("Price is  and carried in sizes (S, M, L, and XL)")
            .images([skype.CardImage.create(session, 'https://avatars1.githubusercontent.com/u/6422482?v=4&s=460')])
            .buttons([
                skype.CardAction.imBack(session, "buy classic white t-shirt", "Buy")
            ]),
        new skype.HeroCard(session)
            .title("Classic Gray T-Shirt")
            .subtitle("100% Soft and Luxurious Cotton")
            .text("Price is  and carried in sizes (S, M, L, and XL)")
            .images([skype.CardImage.create(session, 'https://avatars1.githubusercontent.com/u/6422482?v=4&s=460')])
            .buttons([
                skype.CardAction.imBack(session, "buy classic gray t-shirt", "Buy")
            ])
    ]);
    session.send(msg);