将图像上传到Azure Bot Direct Line

问题描述

我正在尝试将图像从通道上传到Azure Bot,然后使用该图像向外部API请求。我尝试使用网址上传图片,并且效果很好,但是我想从本地设备上传图片,所以我想通过上传发送附件。 Bot Framework Emulator正在运行,但是在Facebook或Direct Line上无法获取上载的图像。为了进行测试,Bot会回复图像数量和图像名称

var activity = turnContext.Activity;
        if(activity.Attachments != null && activity.Attachments.Any()){
            string reply;
            reply = $"{activity.Attachments.Count} file received,";
            foreach (var file in activity.Attachments)
            {
                reply += $"{file.Name},";
            }
            await turnContext.SendActivityAsync(MessageFactory.Text(reply),cancellationToken);
        }

使用模拟器,我尝试附加2张图像,然后Bot回复了我的期望。但是,当我部署到Azure并尝试从Facebook频道发送时,我仅收到image(2)的数量,但文件名为空。我也尝试通过REST API上传,但结果与FaceBook频道相同。首先按照MS文档上传图片

https://directline.botframework.com/v3/directline/conversations/{conversationId}/upload?userId={userId}
Authorization: Bearer SECRET_OR_TOKEN
Content-Type: TYPE_OF_ATTACHMENT
Content-disposition: ATTACHMENT_INFO
[other headers]

[file content]

他们没有解释[file content]是什么,因此对于Postman,即请求的正文,我选择Binary,然后选择本地图像。我发送了请求,然后通过发送GET请求得到了消息,消息与Facebook频道相同。 我不知道我是否成功上传。否则我必须在收到附件后做一些处理。如果必须做某事,我认为它是Content对象的AttachmentContent属性的类型为object。我试图将该对象转换为字节数组,然后转换为Base64字符串,然后发生了错误

那么您能帮我如何处理附件吗?

对不起,我的英语不好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)