Google Actions SDK无法播放来自firebase存储的SSML Audio标记中的音频文件。虽然我可以从维基百科播放相同的.ogg格式文件。 https://upload.wikimedia.org/wikipedia/en/9/9f/Sample_of_%22Another_Day_in_Paradise%22.ogg
我通过发送一个类似于:
的SSML字符串来使用它<speak>
<audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136'>
</audio>
</speak>
但我收到以下错误:
expected_inputs [0] .input_prompt.rich_initial_prompt.items [0] .simple_response:'ssml'无法解析。
可能是什么原因......这是行动sdk的限制,url需要参数免费吗?
答案 0 :(得分:6)
问题不在于它不能使用参数 - 当解析嵌入在SSML中的URL中的参数时,它并不解析&amp;这些天以大多数HTML解析器解析它们的方式分离参数。
有一些可能的解决方案,具体取决于您如何格式化URL。
RFC 1866曾经建议使用;代替&amp;和一些服务器允许这样做。不幸的是,Firebase存储不是其中之一。在大多数情况下,Firebase存储并不需要最终的令牌参数,所以在这种情况下你可以省略它,但这不是解决问题的一般方法。
最后,您可以使用SGML编码并替换&amp;为&
(注意领先的&符号和最后的分号)。所以你的SSML看起来像是:
<speak>
<audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136'>
</audio>
</speak>
最后一种方法可能是最适合一般用途的方法。