Я ломал голову (и другие), пытаясь заставить это работать.Я тяну фотографию через MS Graph API - эта часть работает нормально.Я могу получить данные (в байтах).Тем не менее, я не могу заставить изображение конвертировать должным образом, чтобы прикрепить его в виде файла и опубликовать.
Я прочитал несколько публикаций на SO и GH, а также попробовал ~ 10 различных пакетов и разновидностей npm (btoa, atob и т.д ... от отчаяния), включая пример JS из Graph docs .Ни одно решение не сработало.Все пакеты npm производят разные выходы друг от друга, и ни один из них не соответствует выводу, когда я делаю фотографию и загружаю ее в онлайн конвертер base64.Кроме того, если я возьму онлайн-преобразование и вставлю строку вывода непосредственно в код, это сработает.
Вот текущая итерация моего кода.Мы будем благодарны за любую помощь.
var optionsPhoto = {
url: "https://graph.microsoft.com/v1.0/me/photo/$value",
method: "GET",
headers: {
Authorization: "Bearer " + token
}
};
await request(optionsPhoto, function callback(error, response, body) {
if (!error && response.statusCode == 200) {
photoResponse.data = [
{
"@odata.type": "#microsoft.graph.fileAttachment",
contentBytes: body.split(",").toString("base64"),
contentLocation: "https://graph.microsoft.com/v1.0/me/photo/$value",
isinline: true,
Name: "mypic.jpg"
}
];
photoResponse.ContentType = response.headers["content-type"].toString();
photoResponse.Base64string = (
"data:" +
photoResponse.ContentType +
";base64," +
photoResponse.data[0].contentBytes
).toString();
} else {
console.log(error);
}
});
Команда .sendActivity
принимает вложение только так, как показано ниже:
await dc.context.sendActivity({
attachments: [
{ contentType: photoResponse.ContentType, contentUrl: photoResponse.Base64string }
]
});