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