MS Bot Framework - 丢失音频附件的消息
MS Bot Framework - Messages with audio attachments lost
我正在 Node.js 使用 MS Bot Framework 编写一个机器人。要发送附件,我实际上使用文件流缓冲区作为 contentUrl,例如
...
var base64 = new Buffer(filedata).toString('base64');
var msg = new builder.Message()
.setText(session, text)
.addAttachment({
contentUrl: util.format('data:%s;base64,%s', contentType, base64),
contentType: contentType
});
session.send(msg);
...
其中 contentType
是相关文件的正确 mimetype。
当我在本地测试时(使用 Bot Framework Emulator),这对图像和音频文件都非常有效 - 带有图像附件的消息显示图像,带有音频附件的消息显示允许播放的声卡等。
然而,当我通过 FB Messenger 对此进行测试时,图像工作正常,但音频消息从未出现在 FB 中。甚至消息的文本都没有通过;就像整个消息都丢失了。对话只是跳过包含音频附件的消息。我什至没有看到服务器端收到任何错误。
mp3 和 wav 测试音频文件都会出现这种情况,每个文件都不到 1MB(比我成功测试过的许多图像文件都小)。
有什么技巧可以专门将可播放的音频文件发送到 FB Messenger 频道吗?
谢谢!
我(还)无法从 FB 支持人员那里得到回复,但经过进一步测试后,看起来 FB Messenger 将对音频文件设置文件大小限制接受。
具体来说,我能够获得一个约 45KB 的样本文件,以便在 Messenger 中成功发送和显示,但是一个约 400KB 的较大文件被丢弃(也就是从服务器端的角度来看似乎发送成功,但确实不显示在 Messenger 中)。
奇怪的是,我的一些大得多的图像文件通过了,所以似乎图像附件不存在同样的限制。
会做一些进一步的测试,但最终的解决方案似乎是主要压缩我的音频文件,或者将它们托管在其他地方而不是作为文件流发送。
我正在 Node.js 使用 MS Bot Framework 编写一个机器人。要发送附件,我实际上使用文件流缓冲区作为 contentUrl,例如
...
var base64 = new Buffer(filedata).toString('base64');
var msg = new builder.Message()
.setText(session, text)
.addAttachment({
contentUrl: util.format('data:%s;base64,%s', contentType, base64),
contentType: contentType
});
session.send(msg);
...
其中 contentType
是相关文件的正确 mimetype。
当我在本地测试时(使用 Bot Framework Emulator),这对图像和音频文件都非常有效 - 带有图像附件的消息显示图像,带有音频附件的消息显示允许播放的声卡等。
然而,当我通过 FB Messenger 对此进行测试时,图像工作正常,但音频消息从未出现在 FB 中。甚至消息的文本都没有通过;就像整个消息都丢失了。对话只是跳过包含音频附件的消息。我什至没有看到服务器端收到任何错误。
mp3 和 wav 测试音频文件都会出现这种情况,每个文件都不到 1MB(比我成功测试过的许多图像文件都小)。
有什么技巧可以专门将可播放的音频文件发送到 FB Messenger 频道吗?
谢谢!
我(还)无法从 FB 支持人员那里得到回复,但经过进一步测试后,看起来 FB Messenger 将对音频文件设置文件大小限制接受。
具体来说,我能够获得一个约 45KB 的样本文件,以便在 Messenger 中成功发送和显示,但是一个约 400KB 的较大文件被丢弃(也就是从服务器端的角度来看似乎发送成功,但确实不显示在 Messenger 中)。
奇怪的是,我的一些大得多的图像文件通过了,所以似乎图像附件不存在同样的限制。
会做一些进一步的测试,但最终的解决方案似乎是主要压缩我的音频文件,或者将它们托管在其他地方而不是作为文件流发送。