Документация описывает, как включить двоичный файл встроенного изображения в сообщение:
Для каналов, которые поддерживают встроенные двоичные файлы изображения, вы можете установить свойство contentUrl
от Attachment
до двоичного файла base64 изображения (например, data: image / png; base64, iVBORw0KGgo…).Канал будет отображать изображение или URL-адрес изображения рядом с текстовой строкой сообщения.
В SDK узла BotBuilder V4 вы можете преобразовать двоичный файл изображения в base64 следующим образом:
// After getting an HTTP response:
var imageType = "image/jpeg"
var imageBytes = Buffer.from(response.data).toString('base64');
var imageSrc = `data:${imageType};base64,${imageBytes}`;
var reply = MessageFactory.attachment({
contentType: imageType,
contentUrl: imageSrc,
name: "Your photo"
}, "Here it is:");
await turnContext.sendActivity(reply);
Есть один момент, о котором нужно помнить.Если вы используете библиотеку Axios (что является хорошей идеей, поскольку она позволяет вам ожидать HTTP-запросов), вам нужно будет установить responseType
в конфигурации на arrayBuffer
, или же двоичный файл изображенияможет быть неправильно отформатирован и изображение не будет отображаться:
var response = await axios.get("https://graph.microsoft.com/v1.0/me/photo/$value", {
responseType: 'arraybuffer'
});