【发布时间】:2018-05-02 22:53:28
【问题描述】:
我正在使用 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 频道吗?
谢谢!
【问题讨论】:
-
您是否查看过这是否是 Facebook 频道的限制?有些频道只允许机器人发送某些文件类型,尤其是本地文件,而不是 https 托管文件。您也可以尝试在this sample 找到的声卡。
-
谢谢杰森。我确实尝试了声卡,结果相同(消息似乎从服务器端成功发送,但没有出现在 FB Messenger 中)。我查看了 FB messenger 文档,似乎没有任何限制(事实上,音频文件在他们的 API 文档中是 explicitly listed as an allowed attachment type),除非我遗漏了什么。
-
我也看到了,但它们也只显示了使用 URL 发送的文件的示例,而不是使用 base 64 发送的本地文件的示例。这是经常发生的事情,就像我说的许多频道限制了文件类型当它是本地文件而不是 URL 时。老实说,我会尝试联系 FB 支持并询问他们是否可以让机器人发送本地音频文件。也可以尝试将文件托管在某个地方,看看是否会有所不同,就像我链接的示例一样。
-
好的,我会尝试联系 FB 支持。将保持问题开放,希望有人能提供一些更直接的信息(和/或潜在的解决方案),但感谢您的意见!
标签: node.js audio botframework facebook-messenger facebook-messenger-bot