我目前正在尝试在 Python 3.6 中从 AWS Lambda 向 Lex 发送多条消息,但 Lex 认为我的答案不正确。
我遇到了多个错误,例如:
- 收到来自 Lambda 的无效响应:无法构造消息实例,问题:contentType 不能为空
- “内容”不能为空
- 模块“lambda_function”中的语法错误:行继续符后出现意外字符[在尝试转义我的 JSON 之后]
- 收到来自 Lambda 的无效响应:无法从 START_OBJECT 令牌中反序列化 java.lang.String 实例...
所以基本上,我这样做是这样的:
messages = [
{
'contentType': 'PlainText',
'group': 0,
'value': 'Applying this criteria, you have %d result(s) left.' % len(json.loads(session_attributes['results']))
},
{
'contentType': 'PlainText',
'group': 1,
'value': 'What do you want to do next ?'
}
]
format_message('PlainText', messages)
使用 format_message 暂时看起来像这样(因为我已经尝试了很多事情来使它工作......但没有任何成功) - 但这个也不起作用:
def format_message(message_type, content):
return {'messages': content}
最后,它给出了这种响应格式(带有其他 lex 先决条件,例如插槽等,但我不会在此处显示它们,因为我认为它不相关):
{'message': {'messages': [{'group': 0, 'contentType': 'PlainText', 'value': 'Applying this criteria, you have 1 result(s) left.'}, {'group': 1, 'contentType': 'PlainText', 'value': 'What do you want to do next ?'}]
我试图将“消息”数组转换为字符串,将其作为 JSON 等发送,但似乎没有任何效果。
我阅读了此问题中列出的所有文档...
请问有人已经找到解决方案了吗?
谢谢,