c# - 将图像上传到 Skype BOT

标签 c# bots skype botframework skype-bots

我有一个使用 Microsoft Bot Framework 开发的机器人,并且在 Debug 中正确运行

在 Skype 上安装后,上传图像后我有一个这样的链接

https://df-apis.skype.com/v2/attachments/0-eus-d4-7e19a097c62f5fc21dd53eabfa19d85e/views/original

代码非常简单,无需skype即可运行

if ((activity.Attachments != null) && (activity.Attachments.Count > 0))
{

      analysisResult = await AnalyzeUrl(activity.Attachments[0].ContentUrl);

}
........

如何找到我发送的图片?

最佳答案

根据 this comment , 要获取附件,GET 请求应包含机器人的 JwtToken 作为授权 header :

var attachment = activity.Attachments?.FirstOrDefault();
if (attachment?.ContentUrl != null)
{
    using (var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl)))
    {
        var token = await (connectorClient.Credentials as MicrosoftAppCredentials).GetTokenAsync();
        var uri = new Uri(attachment.ContentUrl);
        using (var httpClient = new HttpClient())
        {
            if (uri.Host.EndsWith("skype.com") && uri.Scheme == Uri.UriSchemeHttps)
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));
            }
            else
            {
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(attachment.ContentType));
            }

            var attachmentData = await httpClient.GetByteArrayAsync(uri);
            analysisResult = await AnalyzeUrl(attachmentData);
        }
    }    
}

这意味着您必须更改 AnalyzeUrl 以接受图像数据而不是 URL。我相信您正在使用的 CognitiveServices 能够接受图像数据。

关于c# - 将图像上传到 Skype BOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633676/

相关文章:

c# - 使用 .Replace() 修复不正确的内联 css

java - 换行 IRC 协议(protocol)

http - 为什么 Skype 可以使用 HTTP 代理进行实时语音通信?

c# - 如何在 C# 中创建 Skype 类的实例?

c# - 精确测量线程中代码的执行时间(C#)

c# - 处理并发

c# - 调用 WCF Web 服务时出错

javascript - Node Restify 发回一个整数?

c# - 从同一解决方案中的不同测试项目引用项目中的 C# 命名空间

html - Skype URL "chat with multiple participants"不起作用