1

Azure AD에서 인증 한 후 내 로봇은 첨부 파일로 응답 메시지에 사진을 추가하는 다음 코드를 통해 Microsoft Graph에서 현재 사용자 사진을 검색 할 수 있습니다.Microsoft Graph GetPhoto가 Microsoft 팀에서 작동하지 않습니다.

  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 팀 채널에 사진이 표시되지 않고 로봇이 기본 오류 메시지 인 "죄송합니다. 내 봇 코드에 문제가 있습니다."가 답변되었습니다.

제발, 어떤 아이디어?

답변

0

첨부 파일 배열이 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, 두 번째 제안이 내 문제를 해결했습니다. –

관련 문제