如何在Python中获取Alexa Skill Slot值?代码问题求助
解决Alexa Skill Slot值获取失败的问题
首先一眼就看到你代码里的语法问题啦!这行代码的写法不符合Python字典的访问规则:
textoutput = intent['slots'].['slotsname'].['value']
你在.后面多写了[],Python里嵌套字典的访问是直接用['key']链式调用,不需要加多余的点号。
第一步:修正语法错误
把那行代码改成正确的写法:
textoutput = intent['slots']['slotsname']['value']
第二步:添加容错处理(避免崩溃)
就算语法对了,也可能因为用户没提供slot值、slot名称拼写错误或者Alexa没正确识别slot导致KeyError。建议用get()方法安全取值,给程序留缓冲空间:
# 逐层安全获取slot值,没取到就返回默认提示 slot = intent.get('slots', {}).get('slotsname', {}) textoutput = slot.get('value', '你还没提供相关信息哦')
额外排查要点
- 确认Skill配置里的slot名称和代码里的
slotsname完全一致(大小写敏感!) - 可以临时加一行
print(intent),打印出intent的完整结构,确认slot的层级和你预期的一致 - 检查intent是否正确触发,确保session传递的intent对象里确实包含了目标slot数据
给你一个完整的示例片段参考:
@ask.intent('YourTargetIntent') def handle_target_intent(intent): # 安全获取slot值 slot_value = intent.get('slots', {}).get('slotsname', {}).get('value') if not slot_value: return question('麻烦你再说一遍相关信息可以吗?') # 后续业务逻辑使用slot_value return statement(f'你提供的信息是:{slot_value}')
内容的提问来源于stack exchange,提问作者venkatesh
相关产品推荐
相关产品推荐

