You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Web嵌入Bot中使用Bot Framework(C#)发送CSV附件

嘿,我来帮你搞定在Web Chat里发送CSV附件的问题!你之前的代码核心问题是直接用服务器本地文件路径作为ContentUrl——Web Chat运行在用户的浏览器里,根本没法访问服务器上的本地文件系统。下面给你两种实用的实现方案:

方法一:直接发送可下载的CSV附件

这种方式会让Web Chat直接展示一个文件下载按钮,用户点击就能获取CSV。核心思路是把本地文件转换成Base64编码,嵌入到Attachment的ContentUrl中:

using System.IO;
using System;
using Microsoft.Bot.Schema;

// 读取本地CSV文件并转换为Base64字符串
var csvFilePath = @"D:\ProjecteFile\Results.csv";
byte[] csvFileBytes = File.ReadAllBytes(csvFilePath);
string csvBase64Content = Convert.ToBase64String(csvFileBytes);

// 创建CSV附件
var csvAttachment = new Attachment
{
    ContentType = "text/csv",
    // 用data URI格式嵌入Base64内容
    ContentUrl = $"data:text/csv;base64,{csvBase64Content}",
    Name = "Server_Report.csv" // 用户看到的文件名
};

// 构建消息并发送
var replyMessage = MessageFactory.Attachment(csvAttachment);
await turnContext.SendActivityAsync(replyMessage, cancellationToken);

方法二:用Hero Card美化附件展示

如果想让交互更友好,可以用Hero Card搭配下载按钮,视觉效果更好:

using System.IO;
using System;
using Microsoft.Bot.Schema;
using Microsoft.Bot.Builder;

// 同样先处理文件为Base64
var csvFilePath = @"D:\ProjecteFile\Results.csv";
byte[] csvFileBytes = File.ReadAllBytes(csvFilePath);
string csvBase64Content = Convert.ToBase64String(csvFileBytes);

// 创建Hero Card
var reportHeroCard = new HeroCard
{
    Title = "服务器运行报告",
    Subtitle = "点击下方按钮下载完整CSV数据",
    Buttons = new List<CardAction>
    {
        new CardAction
        {
            Type = ActionTypes.OpenUrl,
            Title = "下载CSV报告",
            Value = $"data:text/csv;base64,{csvBase64Content}"
        }
    }
};

// 将卡片转换为附件并发送
var cardAttachment = reportHeroCard.ToAttachment();
var replyMessage = MessageFactory.Attachment(cardAttachment);
await turnContext.SendActivityAsync(replyMessage, cancellationToken);

额外注意事项

  • 如果你的CSV文件体积较大(比如超过5MB),Base64编码可能会导致消息体积过大,建议把文件上传到云存储(如Azure Blob Storage),然后使用公开可访问的URL作为ContentUrl/按钮Value。
  • 注意文件路径的写法:C#中可以用@前缀避免转义,或者使用双反斜杠\\。
  • 这两种方式在Web Chat渠道中都能完美运行,因为Web Chat完全支持data URI格式的内容。

内容的提问来源于stack exchange,提问作者chandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:04