def lambda_handler(event,context):
slot=event['currentIntent']['slots']
d="{'Intro': None, 'Start': None, 'ReturnBooking': None, 'name': None, 'pickup': None, 'conformation': None, 'location': None, 'Count': None, 'comfort': None}"
print("using dict:",slot,"using variable:",d)
return {
"dialogAction": {
"type": "Delegate",
"slots": d
}
}
如果有任何人请帮助我。
答案 0 :(得分:3)
如果插槽未保存值,则它应该是null
而不是None
。看来Cloudwatch正在为您记录null
作为None
。那应该是您的变量slot
和d
之间的区别。
这就是d
应该是的:
d="{'Intro': null, 'Start': null, 'ReturnBooking': null, 'name': null, 'pickup': null, 'conformation': null, 'location': null, 'Count': null, 'comfort': null}"
但是实际上没有理由为您的意图插槽重新创建字符串。您只需将slots=event['currentIntent']['slots']
变量传递回Lex。而且,如果您想在Lambda中更改插槽,请将其视为数组,然后将其中一个插槽设置为新值:
slots['slotName'] = "new value";
或者您可以通过将插槽的值设置为null来删除它的值:
slots['slotName'] = null;
然后将slots
返回Lex。