Botframework 使用无法在Skype频道中工作的Bot framework将文本文件作为附件上载

Botframework 使用无法在Skype频道中工作的Bot framework将文本文件作为附件上载,botframework,skype,skype-bots,Botframework,Skype,Skype Bots,在Skype频道中尝试时,我无法使用Bot框架(Bot.Builder v3.11.0)将文本文件作为附件上载。不过,它在Bot框架模拟器中工作。下面是上载文件并返回附件中上载文件URL的活动的代码。它在使用Skype频道时引发异常。或者,是否有其他方法可以实现在Skype频道上载/附加文本文件,然后用户可以从客户端下载 public static async Task<Activity> GetTextAttachmentAsync(Activity message) {

在Skype频道中尝试时,我无法使用Bot框架(Bot.Builder v3.11.0)将文本文件作为附件上载。不过,它在Bot框架模拟器中工作。下面是上载文件并返回附件中上载文件URL的活动的代码。它在使用Skype频道时引发异常。或者,是否有其他方法可以实现在Skype频道上载/附加文本文件,然后用户可以从客户端下载

public static async Task<Activity> GetTextAttachmentAsync(Activity message)
{
    var reply = message.CreateReply("Here is a text attachment");
    var serviceUrl = reply.ServiceUrl;
    var conversationId = reply.Conversation.Id;

    byte[] fileData = null;
    using (var wc = new System.Net.WebClient())
        fileData = wc.DownloadData("https://textfiles.com/100/adventur.txt");

    using (var connector = new ConnectorClient(new Uri(serviceUrl)))
    {
        var attachments = new Attachments(connector);
        var token = await (connector.Credentials as MicrosoftAppCredentials).GetTokenAsync();
        connector.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
        var response = await attachments.Client.Conversations.UploadAttachmentAsync(
            conversationId,
            new AttachmentData
            {
                Name = "transcript.html",
                OriginalBase64 = fileData,
                Type = "text/html"
            });

        reply.Attachments = new List<Attachment>
        {
            new Attachment
            {
                Name = "transcript.html",
                ContentType = "text/html",
                ContentUrl = attachments.GetAttachmentUri(response.Id)
            }
        };

        return reply;
    }
}

在Visual Studio中启用公共语言运行时错误的情况下运行代码时。我得到了以下错误:

似乎站点地址没有可信证书,这使.NET不高兴。当我去调查时,我发现这建议使用下面的代码来克服这一点,但强烈建议不要在生产中使用这一点

ServicePointManager.ServerCertificateValidationCallback += (o, c, ch, er) => true;
这将是我在运行代码之前的最初建议:在使用base64和/或本地文件时,许多频道(包括Skype)限制您可以从bot发送的文件类型。例如,我知道您不能在Skype中以Base64格式发送PDF文件。如果内存正常,您只能使用Skype中的base64方法发送图像和视频文件(也可能是音频文件)。因此,即使您解决了此错误,您也可能在以后遇到此问题。解决方法是使用托管文件。我不确定你想用你的机器人做什么,所以我不确定这是否是你的一个选择,但这是一个选择


因此,如果您在解决证书问题后发现此代码不起作用,请尝试发送一个图像文件,看看它是否起作用,如果它起作用,但您的HTML文件仍然失败,您将知道原因。

谢谢@JasonSowers。textfiles.com URL只是用来获取一个随机样本文本文件来测试代码。我没想到它会带来自己的新问题。我真正的用例是生成聊天记录,可以由bot作为聊天记录中的附件发布,用户可以下载该记录。我得出了同样的结论,Skype不允许文本类型的文件。我能够使它与图像文件一起工作,但与文本文件没有运气
ServicePointManager.ServerCertificateValidationCallback += (o, c, ch, er) => true;