Невозможно отобразить вывод текста с Alexa Show с помощью flask-ask - PullRequest
0 голосов
/ 28 января 2019

Итак, я создал собственную систему управления пулом в Python.Затем я использовал Flask-ask для интеграции этого с моими точками эха и шоу.В Echo Show я использовал формат simple_card, который считывает всю мою информацию, отображая ее на экране:

@ask.intent("GetAllStats")
def get_pool_stats():
    pool_current_ph = read_database("pool_chemicals", "pool_current_ph")
    pool_current_orp = read_database("pool_chemicals", "pool_current_orp")
    pool_current_temp = int(float(read_database("system_status", "pool_current_temp")))
    pool_level_percentage = read_database("pool_level", "pool_level_percentage")
    pic = 'https://richard.mydomian.net/pool_control.jpg'
    msg = render_template('our_stats', temperature=pool_current_temp,
                                   ph=pool_current_ph,
                                   orp=pool_current_orp,
                                   level=pool_level_percentage)
    return statement(msg).simple_card(title='Pool Control', content='Pool Temperature: {0}\n Pool PH: {1}\n Pool ORP: {2}\n Water Level: {3}% .format(pool_current_temp,pool_current_ph,pool_current_orp,pool_level_percentage))

Вот мои our_stats из моего templates.yaml:

our_stats: |
    <speak>
    The pool temperature is currently {{temperature}} degrees. The P H of our pool water is currently {{ph}}, while our oxygen reduction potential
    is right at {{orp}}. The level of our water is at {{level}} percent.
    </speak>

Это прекрасно работает, но у меня нет какого-либо элемента управления шрифтом (который я могу найти), а фон всегда серый.

Так что я начал исследования, используя метод display_render, и я смог получитьчтобы создать действительно красивую фоновую картинку моего пула и при этом прочитать мою статистику, но теперь я не могу заставить ее отображать информацию в печатном виде.

Я изменил свой return statement выше на:

return statement(msg).display_render(template='BodyTemplate3', title='Pool Control', background_image_url=pic)

Опять же, это прекрасно работает и считывает мою информацию, но если я пытаюсь передать ему любое содержимое через textContent, primaryText, content или text, оно всегда дает сбой.Я также пробовал различные шаблоны, включая BodyTemplate и listTemplate.Все безрезультатно.Каждый раз, когда я пытаюсь добавить контент на экран, навык терпит неудачу.Я удаляю контент и получаю фантастическую картинку, и она будет рассказывать мне всю информацию, но это насколько я могу получить.

Одна из главных проблем заключается в том, что я просто не смогчтобы найти любые подходящие примеры, использующие Flask-Ask и Echo Show, с чем угодно, кроме simple_card.

Я надеюсь, что кто-то понял это и может указать мне правильное направление.

1 Ответ

0 голосов
/ 31 января 2019

Вы должны отредактировать свой флакон-ask models.py.

В методе display_render delete:, 'textContent': text

изменить:

def display_render(self, template=None, title=None, backButton='HIDDEN', token=None, background_image_url=None, image=None, text=None, hintText=None):

до:

def display_render(self, template=None, title=None, backButton='HIDDEN', token=None, background_image_url=None, image=None, text=None, format=None, hintText=None):

и добавьте после:

    if background_image_url is not None:
        directive[0]['template']['backgroundImage'] = {
           'sources': [
               {'url': background_image_url}
           ]
        }

это:

    if format == None:
        format = 'PlainText'

    if text is not None:
        directive[0]['template']['textContent'] = {
           'primaryText': {
               'type': format,
               'text': text
           },
           'secondaryText': {
               'type': format,
               'text': None
           },
           'tertiaryText': {
               'type': format,
               'text': None
           }
        }

Теперь вы сможете использовать:

display_render(template='BodyTemplate6', title='Pool Control', background_image_url=pic, text='Text', format='Format')

Я использую здесь BodyTemplate6, потому что некоторые шаблоны не поддерживают текст, формат может быть «PlainText» или «SSML»

...