【问题标题】:MS Bot Framework - Messages with audio attachments lostMS Bot Framework - 带有音频附件的消息丢失
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多