Google Actions未在firebase存储空间中播放ssml中的音频

时间:2017-05-26 16:42:53

标签: actions-on-google ssml

Google Actions SDK无法播放来自firebase存储的SSML Audio标记中的音频文件。虽然我可以从维基百科播放相同的.ogg格式文件。 https://upload.wikimedia.org/wikipedia/en/9/9f/Sample_of_%22Another_Day_in_Paradise%22.ogg

firebase文件https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136

我通过发送一个类似于:

的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需要参数免费吗?

1 个答案:

答案 0 :(得分:6)

问题不在于它不能使用参数 - 当解析嵌入在SSML中的URL中的参数时,它并不解析&amp;这些天以大多数HTML解析器解析它们的方式分离参数。

有一些可能的解决方案,具体取决于您如何格式化URL。

RFC 1866曾经建议使用;代替&amp;和一些服务器允许这样做。不幸的是,Firebase存储不是其中之一。

在大多数情况下,Firebase存储并不需要最终的令牌参数,所以在这种情况下你可以省略它,但这不是解决问题的一般方法。

最后,您可以使用SGML编码并替换&amp;为&amp;(注意领先的&符号和最后的分号)。所以你的SSML看起来像是:

<speak>
  <audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&amp;token=d0d08f9d-e340-478c-af00-657109683136'>
  </audio>
</speak>

最后一种方法可能是最适合一般用途的方法。