Загрузить изображение в Skype BOT

У меня бот разрабатывается с помощью Microsoft Bot Framework, и в Debug запускаются правильно

После установки в скайпе, после загрузки изображения у меня есть ссылка, подобная этой

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

Код очень прост и работает без скайпа

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

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

}
........

Как мне найти картинку, которую я отправил?

 daniele300401 сент. 2016 г., 09:30
@MartinKearn AnalyzeUrl - это функция, которая вызывает CognitiveServices, эта функция работает правильно. Я думаю, что проблемы в политиках безопасности Skype
 Martin Kearn30 авг. 2016 г., 23:38
Что такоеAnalyzeUrl? Можете ли вы поделиться кодом для этого?

Ответы на вопрос(1)

Решение Вопроса

В соответствии сэтот комментарийЧтобы получить вложение, запрос GET должен содержатьJwtToken бота в качестве заголовка авторизации:

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, которые вы используете, способны принимать данные изображения.

Ваш ответ на вопрос