C# 如何使用c发送microsoft botframework sdk v4中本地文件夹中的图像#
我使用Microsoft Botframework C#SDK V4创建了一个机器人,它运行良好。现在我想给机器人添加一些图像。我正在使用卡片,但卡片只获取图像的url。我想发送本地文件夹中的图像。我怎样才能让它工作 我已经在15.0 github repo()上尝试过了。当我在处理附件github repo时使用了精确的代码,我得到了以下内联附件的异常stacktraceC# 如何使用c发送microsoft botframework sdk v4中本地文件夹中的图像#,c#,image,botframework,C#,Image,Botframework,我使用Microsoft Botframework C#SDK V4创建了一个机器人,它运行良好。现在我想给机器人添加一些图像。我正在使用卡片,但卡片只获取图像的url。我想发送本地文件夹中的图像。我怎样才能让它工作 我已经在15.0 github repo()上尝试过了。当我在处理附件github repo时使用了精确的代码,我得到了以下内联附件的异常stacktrace Sorry, it looks like something went wrong.’ at Microsoft.Bot.
Sorry, it looks like something went wrong.’ at Microsoft.Bot.Connector.Conversations.d__10.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Connector.ConversationsExtensions.d__17.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Builder.BotFrameworkAdapter.d__15.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass22_0.
<g__SendActivitiesThroughAdapter|1>d.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Builder.TurnContext.d__21.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.BotBuilderSamples.AttachmentsBot.d__0.MoveNext() in
C:\botbuilder-samples\samples\csharp_dotnetcore\15.handling-attachments\AttachmentsBot.cs:line 65
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Builder.MiddlewareSet.d__3.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Bot.Builder.BotAdapter.d__13.MoveNext()’
抱歉,看起来好像出了问题。'at Microsoft.Bot.Connector.Conversations.d_u10.MoveNext()
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Connector.ConversationsExtensions.d_u17.MoveNext()中
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Builder.BotFrameworkAdapter.d_u15.MoveNext()中
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Builder.TurnContext.c\u DisplayClass22\u 0上。
d、 MoveNext()
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Builder.TurnContext.d_u21.MoveNext()上
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.BotBuilderSamples.AttachmentsBot.d_u0.MoveNext()中
C:\botbuilder samples\samples\csharp\u dotnetcore\15.处理附件\AttachmentsBot.cs:第65行
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Builder.MiddlewareSet.d_u3.MoveNext()上
-来自引发异常的上一个位置的堆栈结束跟踪-
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Builder.BotAdapter.d_u13.MoveNext()中
如何解决此问题???此示例演示如何读取本地文件,并将其附加为base64编码图像:
reply.Attachments = new List<Attachment>() { GetInlineAttachment() };
private static Attachment GetInlineAttachment()
{
var imagePath = Path.Combine(Environment.CurrentDirectory, @"Resources\architecture-resize.png");
var imageData = Convert.ToBase64String(File.ReadAllBytes(imagePath));
return new Attachment
{
Name = @"Resources\architecture-resize.png",
ContentType = "image/png",
ContentUrl = $"data:image/png;base64,{imageData}",
};
}
当我尝试使用第一个代码段时,它会向我显示“抱歉,它看起来出了问题”,即使我在我的项目资源文件夹中添加了该图像。您能否建议我如何使用c#在sdk v4中获取异常堆栈跟踪以及默认错误消息。请确保已将本地文件设置为“复制到输出目录”。您可以通过添加OnTurnError来获取异常堆栈跟踪。您还可以在本地进行调试:感谢您的响应,现在我正在获取堆栈跟踪以及默认错误消息。当我在将本地文件设置为“复制到输出目录”后尝试使用第一个代码段时,它仍然不起作用。当我尝试使用“http url”时,它可以工作,但当我尝试使用本地路径时,它不会显示图像。我还需要改变什么吗。
private async Task SendFile(ITurnContext turnContext)
{
var webRoot = _env.ContentRootPath;
var imagePath = System.IO.Path.Combine(webRoot, "Resources", "BotFrameworkDiagram.png");
var connector = turnContext.TurnState.GetValueOrDefault("Microsoft.Bot.Connector.IConnectorClient") as ConnectorClient;
var attachments = new Attachments(connector);
var response = await attachments.Client.Conversations.UploadAttachmentAsync(
turnContext.Activity.Conversation.Id,
new AttachmentData
{
Name = "BotFrameworkDiagram.png",
OriginalBase64 = File.ReadAllBytes(imagePath),
Type = "image/png"
});
var attachmentUri = attachments.GetAttachmentUri(response.Id);
var attachment = new Attachment
{
Name = "BotFrameworkDiagram.png",
ContentType = "image/png",
ContentUrl = attachmentUri
};
var reply = turnContext.Activity.CreateReply();
reply.Attachments.Add(attachment);
await turnContext.SendActivityAsync(reply);
}