1

Azure ADの認証後、ボットは次のコードを使用してMicrosoft Graphから現在のユーザーの写真を取得し、写真を添付ファイルとして応答メッセージに追加します。Microsoft Graph GetPhotoがMicrosoft Teamsボットで動作しない

  HttpClient client2 = new HttpClient(); 
      client2.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); 
      var response2 = await client2.GetByteArrayAsync("https://graph.microsoft.com/v1.0/me/photo/$value"); 

      Activity replyToConversation = (Activity)context.MakeMessage(); 

      replyToConversation.Type = "message"; 
      replyToConversation.Attachments.Add(new Attachment() 
      { 
       Content = response2, 
       ContentType = "image/jpeg" 
      }); 

      await context.PostAsync(replyToConversation); 
      context.Wait(MessageReceivedAsync); 

ウェブチャットチャンネルではすべてが正常に動作しますが、何らかの理由で画像がMicrosoft Teamsチャンネルに表示されず、ボットがデフォルトのエラーメッセージ「ボットコードに問題があります。

どうかありがとうございます。

答えて

0

Attachments配列がnullでないかどうかを最初に確認します。通常はそうであるため、null参照例外が発生している可能性があります。だから、リストにあなたの添付ファイルを追加する前に、次の行を追加します。

replyToConversation.Attachments = new List<Attachment>(); 

そのあとは、静止画が表示されない場合は、「URL」を構築するbase64文字列表現にバイトを変換しようとして設定することができますとバイト配列を添付ファイルのコンテンツとして設定する代わりにContentUrlを使用します。

string url = "data:image/jpeg;base64," + Convert.ToBase64String(response2) 

var replyToConversation = context.MakeMessage(); 
replyToConversation.Attachments = new List<Attachment>(); 
replyToConversation.Attachments.Add(new Attachment() 
{ 
    ContentUrl = url, 
    ContentType = "image/jpeg" 
}); 
+0

おかげさまで@Ezequiel、2番目の提案が私の問題を解決しました! –

関連する問題