在Microsoft BotFramework中的英雄卡中发送本地存储的图像

时间:2019-03-08 12:00:56

标签: node.js botframework

我的项目目录中有一个图像。我需要在英雄卡中显示该图像。只能通过URL将图像添加到英雄卡吗?

如果不是如何在英雄卡中添加本地存储的图像,或者可以选择其他任何可以使用的卡(例如自适应卡)?

1 个答案:

答案 0 :(得分:0)

您可以将图像编码为base64并将其添加到英雄卡中。使用fs包创建图像的位图,使用该位图创建一个新的Buffer对象,然后将缓冲区转换为base64字符串。有关更多详细信息,请参见下面的代码段。请注意,文件路径必须是图像的绝对路径。

编码图像

const fs = require('fs');

function encodeBase64(path) {
    const bitmap = fs.readFileSync(path);
    return new Buffer(bitmap).toString('base64')
}

创建HeroCard

createHeroCard(image, imageType='jpg') {
    return CardFactory.heroCard(
        'BotFramework Hero Card',
        CardFactory.images([`data:image/${imageType};base64,${encodeBase64(image)}`, 'http://localhost:3978/dog.jpg']),
        CardFactory.actions([
            {
                type: 'postBack',
                title: 'Button',
                value: 'Button'
            }
        ])
    );
}

希望这会有所帮助!