AWS Lex的ImageResponseCard返回Image URL is invalid报错问题咨询
Lex ChatBot Lambda配置Image URL报错定位与解决方法
问题定位步骤
- 首先排查JSON语法错误
你提供的代码片段存在2个显性语法问题:title字段字符串前缺少双引号,错误写法为"title": my title",JSON要求字符串必须前后都用双引号包裹buttons数组末尾多了多余的逗号,严格JSON解析器会直接判定格式不合法 - 其次排查URL本身合规性
- 确认URL协议为HTTPS,Lex不支持HTTP协议的图片资源
- 确认URL为公网可直接访问的地址,不能是内网地址、私有存储(如未开公共权限的S3桶)、需要登录鉴权才能访问的地址
- 检查URL拼写错误,你示例中的
https://my/imgae.png既不符合标准域名格式,也存在image拼写为imgae的低级错误 - 确认图片格式为Lex支持的JPG/PNG/GIF,单张图片大小不超过5MB
- 最后排查响应结构配置错误
Lex单张imageResponseCard仅支持配置1张图片,如果你要展示多张图片,需要返回多个imageResponseCard组成的数组,不能在单个卡片内填写多个imageUrl字段
修复后的参考代码
"imageResponseCard": { "title": "my title", "imageUrl": "https://替换为你的公网可访问图片地址.png", "buttons": [ {"text": "button1", "value": "button1"}, {"text": "button2", "value": "button2"} ] }
如果你的图片存储在S3桶,可直接将对应图片的桶权限设置为公共读,或者生成有效期覆盖对话周期的S3预签名URL填入imageUrl字段即可。
内容的提问来源于stack exchange,提问作者Ori N
相关产品推荐
相关产品推荐

