Flask-ask не распознает SSML в файле YAML и выводит простой текстовый ответ

Ниже приведен шаблон ответа в моем файле templates.yaml:

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

Согласно flask-ask документы, они автоматически обнаруживают SSML на основе корневого элемента «speak». Тем не менее, когда я тестирую свое приложение, Alexa готовит шаблон varbatim, и я вижу, что ответ, отправленный обратно в службу Alexa, имеет тип обычного текста. Я считаю, что SSML верен в соответствии с Amazon документация

Я вызываю шаблон через:

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

Заранее извиняюсь, если это что-то простое, так как я кодирую всего 7 месяцев. Спасибо!


person heytimj    schedule 07.01.2017    source источник


Ответы (4)


Для меня проблема была в файле .../flask_ask/models.py. Прокрутите вниз до функции def _output_speech(speech): и замените:

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

с:

if '<speak' in speech:

Легко и работает...

person Daniel    schedule 28.04.2018

на случай, если кто-нибудь обнаружит это в будущем, исходный шаблон верен. Не уверен, почему мне пришлось копировать и повторно вставлять его, но была какая-то странная ошибка с отступом.

person heytimj    schedule 10.01.2017

У меня тоже были проблемы с этим, и я обнаружил, что мне нужно перезапустить экземпляр FlaskAsk, прежде чем он обнаружит изменения в моем файле templates.yaml.

person Adam E.    schedule 13.02.2018
comment
Короткие ответы, такие как этот, обычно лучше подходят в качестве комментариев. - person AfroThundr; 13.02.2018

В моем случае строка yaml была загружена как юникод.

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

Я исправил это, закодировав юникод в обычную строку.

alexa_speaks.encode('utf-8')

Теперь amazon правильно распознает предложения в моем файле yaml как ssml.

person Kraka    schedule 28.06.2019