node.js - 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 频道有什么技巧吗?
谢谢!
解决方案
我(还)无法从 FB 支持获得响应,但经过进一步测试,看起来 FB Messenger 将接受的音频文件存在文件大小限制。
具体来说,我能够获得一个约 45KB 的示例文件以在 Messenger 中成功发送和显示,但一个约 400KB 的较大文件被丢弃(从服务器端的角度来看,似乎发送成功,但没有显示在 Messenger 中)。
奇怪的是,我的一些更大的图像文件通过了,所以图像附件似乎不存在同样的限制。
会做一些进一步的测试,但似乎最终的解决方案是要么主要压缩我的音频文件,要么将它们托管在其他地方,而不是作为文件流发送。
推荐阅读
- github - C# GitHub API - 如何添加/删除拉取请求受让人?
- webpack - Webpack 5 字体解码失败和 OTS 解析错误的问题
- visual-studio - 在 VS2019 中创建的报表服务器项目上使用查询设计器中的“添加表”时出错
- amazon-dynamodb - 从另一列计算指数
- xml - Google Apps 脚本 XML 解释错误
- java - 使用 {spring boot & Thymeleaf} 对表中的外键元素进行排序
- docker - 从 docker 容器中移动配置卷,如何不再设置应用程序
- android - Jetpack Compose 可以从任何线程绘制/更新 UI 吗?
- windows - 如何从 Windows 批处理文件 (.bat) 文件中删除受 Windows 保护的 PC?
- javascript - 从父组件清除子组件状态