首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过flask-ask使用Alexa Show显示文本输出

无法通过flask-ask使用Alexa Show显示文本输出
EN

Stack Overflow用户
提问于 2019-01-28 06:26:13
回答 1查看 159关注 0票数 1

因此,我用Python构建了一个自定义的池控制系统。然后我使用Flask-ask将其与我的Echo Dots和Show集成在一起。在Echo Show中,我使用了一种simple_card格式,它在屏幕上显示我的所有信息时将其读回:

代码语言:javascript
复制
@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))

下面是我的templates.yaml中的our_stats:

代码语言:javascript
复制
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更改为:

代码语言:javascript
复制
return statement(msg).display_render(template='BodyTemplate3', title='Pool Control', background_image_url=pic)

同样,这个方法很有效,可以读回我的信息,但如果我尝试通过textContentprimaryTextcontenttext向它传递任何内容,它总是失败。我也尝试过各种模板,包括BodyTemplatelistTemplate的模板。都没有用。任何时候我试图在屏幕上添加内容,技能都会失败。我删除了内容,我得到了一张很棒的图片,它会告诉我所有的信息,但这是我所能得到的。

其中一个主要问题是,除了simple_card之外,我还找不到任何使用Flask-Ask和Echo Show的相关示例。

我希望有人已经弄明白了这一点,并能为我指明正确的方向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 20:48:45

你必须编辑你的flask-ask models.py。

在display_render方法delete:,'textContent':text中

更改:

代码语言:javascript
复制
def display_render(self, template=None, title=None, backButton='HIDDEN', token=None, background_image_url=None, image=None, text=None, hintText=None):

至:

代码语言:javascript
复制
def display_render(self, template=None, title=None, backButton='HIDDEN', token=None, background_image_url=None, image=None, text=None, format=None, hintText=None):

并在以下位置添加:

代码语言:javascript
复制
    if background_image_url is not None:
        directive[0]['template']['backgroundImage'] = {
           'sources': [
               {'url': background_image_url}
           ]
        }

这一点:

代码语言:javascript
复制
    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
           }
        }

现在,您应该能够使用:

代码语言:javascript
复制
display_render(template='BodyTemplate6', title='Pool Control', background_image_url=pic, text='Text', format='Format')

我在这里使用BodyTemplate6是因为有些模板不支持文本,格式可以是'PlainText‘或'SSML’

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54393437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档