无法使用直线在 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 ,它正在工作