Flask-ask не распознает SSML в файле YAML и не выводит текстовый ответ
Ниже приведен шаблон ответа в моем файле templates.yaml:
entity_paused: <speak>I paused {{ entity }} <say-as interpret-as="digits">{{ id }}</say-as></speak>.
Согласно документам колбы-запроса, они автоматически обнаруживают SSML на основе корневого элемента "говорить". Тем не менее, когда я тестирую свое приложение, Alexa готовит шаблон varbatim, и я вижу, что ответ, отправленный обратно в сервис Alexa, имеет открытый текст. Я считаю, что SSML является правильным в соответствии с документацией Amazon
Я вызываю шаблон через:
return statement(render_template('paused_entity', entity='SomeEntity', id=123456))
Заранее извиняюсь, если это что-то основное, так как я кодирую только 7 месяцев. Спасибо!
3 ответа
Для меня проблема была в файле.../flask_ask/models.py. Прокрутите вниз, чтобы определить _output_speech(речь): функция и заменить:
xmldoc = ElementTree.fromstring(speech)
if xmldoc.tag == 'speak':
с:
if '<speak' in speech:
Легко и работает...
В случае, если кто-нибудь найдет это в будущем, изначально предоставленный шаблон будет правильным. Не уверен, почему мне пришлось скопировать и заново вставить его, но произошла странная ошибка.
У меня тоже были проблемы с этим, и я обнаружил, что мне нужно перезапустить экземпляр FlaskAsk, прежде чем он обнаружит изменения в моем файле templates.yaml.
В моем случае строка yaml была загружена как unicode.
- <speak> Schön dich zu sehen! </speak>
Я исправил это, закодировав юникод в обычную строку.
alexa_speaks.encode('utf-8')
Теперь Amazon правильно распознает предложения в моем файле yaml как ssml.