【问题标题】:Flask-ask not recognizing SSML in YAML file and outputting plain text responseFlask-ask 无法识别 YAML 文件中的 SSML 并输出纯文本响应
【发布时间】:2017-05-22 00:02:13
【问题描述】:

以下是我的 templates.yaml 文件中的响应模板:

entity_paused: <speak>I paused {{ entity }} <say-as interpret-as="digits">{{ id }}</say-as></speak>.

根据flask-ask documents,它们会根据根元素“speak”自动检测SSML。然而,当我测试我的应用程序时,Alexa 准备好模板 varbatim,我可以看到发送回 Alexa 服务的响应是纯文本类型。 根据亚马逊documentation

,我相信 SSML 是正确的

我通过以下方式调用模板:

return statement(render_template('paused_entity', entity='SomeEntity', id=123456))

如果这是基本的事情,请提前道歉,因为我只编写了 7 个月的代码。谢谢!

【问题讨论】:

    标签: python flask alexa ssml


    【解决方案1】:

    对我来说,问题出在 .../flask_ask/models.py 文件中。 向下滚动到 def _output_speech(speech): 函数并替换:

    xmldoc = ElementTree.fromstring(speech)
        if xmldoc.tag == 'speak':
    

    与:

    if '<speak' in speech:
    

    简单又好用...

    【讨论】:

      【解决方案2】:

      万一以后有人发现,最初提供的模板是正确的。不知道为什么我必须复制并重新粘贴它,但有一些奇怪的 unindent 错误。

      【讨论】:

        【解决方案3】:

        我也遇到了这个问题,发现我需要重新启动 FlaskAsk 实例,然后它才能检测到我的 templates.yaml 文件的更改。

        【讨论】:

        • 这样的简短答案通常更适合作为 cmets。
        【解决方案4】:

        在我的情况下,yaml 的字符串已作为 unicode 加载。

        - <speak> Schön dich zu sehen! </speak> 
        

        我通过将 unicode 编码为普通字符串来修复它。

        alexa_speaks.encode('utf-8')
        

        现在亚马逊将我的 yaml 文件中的句子正确识别为 ssml。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-12
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 2014-04-20
          • 1970-01-01
          • 2017-04-12
          • 1970-01-01
          相关资源
          最近更新 更多