Botframework 如何发送base64编码的PDF文件?

Botframework 如何发送base64编码的PDF文件?,botframework,telegram-bot,Botframework,Telegram Bot,我想我的机器人发送一个PDF文件给用户。我将PDF作为base64字符串,并尝试通过附件发送: Attachment attachment1 = new Attachment(); attachment1.Name = "name.pdf"; attachment1.ContentType = "application/pdf"; attachment1.ContentUrl = "data:application/pdf;base64," + base64String; var m = co

我想我的机器人发送一个PDF文件给用户。我将PDF作为base64字符串,并尝试通过附件发送:

Attachment attachment1 = new Attachment();
attachment1.Name = "name.pdf";
attachment1.ContentType = "application/pdf";
attachment1.ContentUrl = "data:application/pdf;base64," + base64String;

var m = context.MakeMessage();
m.Attachments.Add(attachment1);
m.Text = "File";

await context.PostAsync(m);
在模拟器中,它只是不工作,但在通道电报和Facebook(我需要),机器人只是输出一个错误

有人已经成功了吗


注意:使用HTTP地址可以很好地工作,但我需要在botframework调用电报的sendDocument方法中使用base64字符串作为此方法,并且此方法在其
document
属性中用于获取HTTP url或文件id,因此不能将base64字符串作为有效的文档类型传递给此方法

您可以按照中传入电报的文档的有效类型进行操作(另请参见下图)


pdf文件必须是嵌入式资源。希望能有所帮助

if (this.channelid == "telegram")
{
    var url = string.Format("https://api.telegram.org/bot{0}/sendDocument", Settings.tokentelegram);

    Assembly _assembly;
    Stream file;

    using (var form = new MultipartFormDataContent())
    {
        form.Add(new StringContent(this.chat_id, Encoding.UTF8), "chat_id");

        _assembly = Assembly.GetExecutingAssembly();
        file = _assembly.GetManifestResourceStream("Namespace.FolderResourses.name.pdf");

        form.Add(new StreamContent(file), "document", "name.pdf");

        using (var client = new HttpClient())
        {
            await client.PostAsync(url, form);
        }
    }
}  

事实上,我这样做是可行的,唯一的问题是我的base64字符串太大(所以文件太大)!这似乎很奇怪,因为电报应该处理50MB之前的文件。。。