如何解决将图像上传到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
对象的Attachment
。 Content
属性的类型为object
。我试图将该对象转换为字节数组,然后转换为Base64字符串,然后发生了错误。
那么您能帮我如何处理附件吗?
对不起,我的英语不好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。