无法使用直线在 Webchat 中发送附件,相同的代码在模拟器中运行良好
Unable to send Attachment in Webchat using directline, same code is working fine in emulator
var response = MessageFactory.Attachment(new Attachment
{
Name = @"application.png",
ContentType = "image/png",
ContentUrl = "base64sting"
});
await dc.Context.SendActivityAsync(response);
上面的代码在我尝试向用户发送附件时在网络聊天中抛出以下异常,在模拟器中它工作正常
at
Microsoft.Bot.Connector.Conversations.ReplyToActivityWithHttpMessagesAsync(String
conversationId, String activityId, Activity activity, Dictionary`2
customHeaders, CancellationToken cancellationToken) in
D:\a\s\libraries\Microsoft.Bot.Connector\Conversations.cs:line 1121
at
Microsoft.Bot.Connector.ConversationsExtensions.ReplyToActivityAsync(IConversations
operations, String conversationId, String activityId, Activity
activity, CancellationToken cancellationToken) in
D:\a\s\libraries\Microsoft.Bot.Connector\ConversationsExtensions.cs:line
241
at
Microsoft.Bot.Builder.BotFrameworkAdapter.SendActivitiesAsync(ITurnContext
turnContext, Activity[] activities, CancellationToken
cancellationToken) in
D:\a\s\libraries\Microsoft.Bot.Builder\BotFrameworkAdapter.cs:line
316
at
Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass22_0.d.MoveNext()
in D:\a\s\libraries\Microsoft.Bot.Builder\TurnContext.cs:line 267
我什至试过这个
using (var connector = new ConnectorClient(new Uri(serviceUrl)))
{
var attachments = new Attachments(connector);
var response = await attachments.Client.Conversations.UploadAttachmentAsync(
conversationId,
new AttachmentData
{
Name = @"Resources\architecture-resize.png",
OriginalBase64 = File.ReadAllBytes(imagePath),
Type = "image/png",
}
);
var attachmentUri = attachments.GetAttachmentUri(response.Id);
return new Attachment
{
Name = @"Resources\architecture-resize.png",
ContentType = "image/png",
ContentUrl = attachmentUri,
};
}
这也失败了,是否有任何解决方法可以在没有托管内容的情况下使用网络聊天向用户发送附件url?
对于那些面临这个问题的人,下面是根本原因。
我试图将图像作为一个项目发送以单击并保存,我想我找到了问题,directline 仅支持 4MB 消息大小,我的图像的 base64string 非常大,导致消息超过 4MB,现在正在将图像上传到 azure blob 并将 blob uri 用作 contentURI ,它正在工作
var response = MessageFactory.Attachment(new Attachment
{
Name = @"application.png",
ContentType = "image/png",
ContentUrl = "base64sting"
});
await dc.Context.SendActivityAsync(response);
上面的代码在我尝试向用户发送附件时在网络聊天中抛出以下异常,在模拟器中它工作正常
at Microsoft.Bot.Connector.Conversations.ReplyToActivityWithHttpMessagesAsync(String conversationId, String activityId, Activity activity, Dictionary`2 customHeaders, CancellationToken cancellationToken) in D:\a\s\libraries\Microsoft.Bot.Connector\Conversations.cs:line 1121
at Microsoft.Bot.Connector.ConversationsExtensions.ReplyToActivityAsync(IConversations operations, String conversationId, String activityId, Activity activity, CancellationToken cancellationToken) in D:\a\s\libraries\Microsoft.Bot.Connector\ConversationsExtensions.cs:line 241
at Microsoft.Bot.Builder.BotFrameworkAdapter.SendActivitiesAsync(ITurnContext turnContext, Activity[] activities, CancellationToken cancellationToken) in D:\a\s\libraries\Microsoft.Bot.Builder\BotFrameworkAdapter.cs:line 316
at Microsoft.Bot.Builder.TurnContext.<>c__DisplayClass22_0.d.MoveNext() in D:\a\s\libraries\Microsoft.Bot.Builder\TurnContext.cs:line 267
我什至试过这个
using (var connector = new ConnectorClient(new Uri(serviceUrl)))
{
var attachments = new Attachments(connector);
var response = await attachments.Client.Conversations.UploadAttachmentAsync(
conversationId,
new AttachmentData
{
Name = @"Resources\architecture-resize.png",
OriginalBase64 = File.ReadAllBytes(imagePath),
Type = "image/png",
}
);
var attachmentUri = attachments.GetAttachmentUri(response.Id);
return new Attachment
{
Name = @"Resources\architecture-resize.png",
ContentType = "image/png",
ContentUrl = attachmentUri,
};
}
这也失败了,是否有任何解决方法可以在没有托管内容的情况下使用网络聊天向用户发送附件url?
对于那些面临这个问题的人,下面是根本原因。
我试图将图像作为一个项目发送以单击并保存,我想我找到了问题,directline 仅支持 4MB 消息大小,我的图像的 base64string 非常大,导致消息超过 4MB,现在正在将图像上传到 azure blob 并将 blob uri 用作 contentURI ,它正在工作