1

Azure AD に対して認証した後、ボットは次のコードを使用して Microsoft Graph から現在のユーザーの写真を取得できます。これにより、写真が添付ファイルとして応答メッセージに追加されます。

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

Web チャット チャネルではすべてが期待どおりに機能しますが、何らかの理由で画像が Microsoft Teams チャネルに表示されず、ボットは既定のエラー メッセージ「申し訳ありませんが、ボット コードに問題があります」に応答します。

何かアイデアはありますか?

4

1 に答える 1

0

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

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

それでも画像が表示されない場合は、バイト配列を添付ファイルのコンテンツとして設定する代わりに、バイトを base64 文字列表現に変換して ContentUrl として設定する「url」を作成してみてください。

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"
});
于 2016-12-21T12:06:16.317 に答える