首页 > 解决方案 > MS Bot Framework - 带有音频附件的消息丢失

问题描述

我正在使用 MS Bot 框架在 Node.js 中编写一个机器人。要发送附件,我实际上是使用文件流缓冲区作为 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 频道有什么技巧吗?

谢谢!

标签: node.jsaudiobotframeworkfacebook-messengerfacebook-messenger-bot

解决方案


我(还)无法从 FB 支持获得响应,但经过进一步测试,看起来 FB Messenger 将接受的音频文件存在文件大小限制。

具体来说,我能够获得一个约 45KB 的示例文件以在 Messenger 中成功发送和显示,但一个约 400KB 的较大文件被丢弃(从服务器端的角度来看,似乎发送成功,但没有显示在 Messenger 中)。

奇怪的是,我的一些更大的图像文件通过了,所以图像附件似乎不存在同样的限制。

会做一些进一步的测试,但似乎最终的解决方案是要么主要压缩我的音频文件,要么将它们托管在其他地方,而不是作为文件流发送。


推荐阅读