Alexa Flask Ask Yes / No 响应处理
Posted
技术标签:
【中文标题】Alexa Flask Ask Yes / No 响应处理【英文标题】:Alexa Flask Ask Yes / No response handling 【发布时间】:2017-09-25 14:51:54 【问题描述】:我正在尝试在 python 中使用 Flask Ask 创建一个简单的 Alexa 技能。
我有一个名为“SearchIntent”的intent,带有一个“searchterm”槽,python 代码如下所示:
@ask.intent("SearchIntent")
def SearchIntent(searchterm):
resList = []
searchterm = searchterm.lower()
for item in somelist:
if item.find(searchterm) != -1:
resList.append(item)
return question("I Found " + str(len(resList)) + ", Do you want me to list them all?")
我想检查用户的响应,如果他说“是”而不是阅读所有结果:
return statement('\n'.join(resList))
如果用户拒绝,则执行其他操作
类似:
...
return question("I Found " + str(len(resList)) + ", Do you want me to list them all?")
if "return question" == "yes":
do something
else:
do something else
我不想在 YesIntent 中再次创建搜索功能,是否可以在同一个功能中执行类似的操作?
提前谢谢你!
【问题讨论】:
如何设置适当的会话属性并基于它们以是/否意图给出适当的消息? 【参考方案1】:这在使用烧瓶询问的建议方式中是不可能的。调用 return
后,您将离开 SearchIntent() 函数,无法检查答案或运行其他代码。
但是,您仍然可以使其工作:在用户回答您的问题后,会发送一个新的意图,并且 flask-ask 会调用相应的函数。通过使用会话属性,正如@user3872094 所建议的那样,您可以在这个新函数中处理您的searchterm
。会话属性用于在不同意图请求之间的会话期间保留用户输入。
检查这个最小的例子:
@ask.intent("SearchIntent")
def SearchIntent(searchterm):
session.attributes['term'] = searchterm
return question("I understood . Is that correct?".format(searchterm))
@ask.intent('AMAZON.YesIntent')
def yes_intent():
term = session.attributes['term']
return statement("Ok. So your word really was .".format(term))
@ask.intent('AMAZON.NoIntent')
def no_intent():
return statement("I am sorry I got it wrong.")
将 Amazon Yes 和 No 意图添加到您的 intent_schema:
"intents": [
"intent": "SearchIntent",
"slots": [
"name": "searchterm",
"type": "AMAZON.LITERAL"
]
,
"intent": "AMAZON.NoIntent"
,
"intent": "AMAZON.YesIntent"
]
【讨论】:
非常感谢,这对您很有帮助以上是关于Alexa Flask Ask Yes / No 响应处理的主要内容,如果未能解决你的问题,请参考以下文章
使用烧瓶询问的 Alexa 技能:HTTP 500:内部服务器错误
如何为 Alexa 技能意图响应获取和使用确认“是”或“否”
ASK-CLI 部署不适用于托管“使用 CloudFormation 的 AWS” - Alexa 区域“默认”:访问被拒绝