2016-07-28 40 views
4

Ich habe ein Bot mit Microsoft Bot-Framework entwickeln und in Debug laufen richtigBild hochladen zu Skype BOT

Nach der Installation von Skype, nach dem Upload das Bild habe ich einen Link wie diesen

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

Der Code ist sehr einfach und läuft ohne skype

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

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

} 
........ 

Wie kann ich das Bild, die ich geschickt habe?

+0

Was ist 'AnalyzeUrl'? Können Sie den Code dafür teilen? –

+0

@MartinKearn AnalyzeUrl ist eine Funktion, die CognitiveServices aufruft, diese Funktion wird korrekt ausgeführt. Ich denke, dass die Probleme in den Sicherheitsrichtlinien von Skype liegen – daniele3004

Antwort

3

Nach this comment, eine Anlage zu holen, sollte die GET-Anfrage JwtToken des Bot als Autorisierungsheader enthalten:

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); 
     } 
    }  
} 

Das bedeutet, müssen Sie die AnalyzeUrl ändern, um die Bilddaten zu akzeptieren statt URL Ich glaube, dass CognitiveServices, die Sie verwenden, in der Lage sind, die Bilddaten zu akzeptieren.

Verwandte Themen