aws-lambda - 响应卡未显示 -Amazon lex
问题描述
我创建了一个 lex 聊天机器人并将其集成到网站中。它工作正常。我知道我必须从 lambda 调用响应卡。我也这样做了。另外,我在 lex 控制台中启用了响应卡复选框。毕竟,我也看不到网站上的按钮。除了响应卡之外,还有其他方法可以显示按钮吗?
下面是代码:在这里,完成后,我已经给出了响应卡,这意味着在消息“嘿,您的票已被提出”之后,将显示按钮。这显示在 lex test 聊天机器人中。
import json
import logging
import re
import http.client
import mimetypes
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def close():
val= {
"dialogAction":
{
"fulfillmentState":"Fulfilled",
"type":"Close",
"message":
{
"contentType":"PlainText",
"content":"Hey your ticket has been raised"
},
'responseCard': {
'version': '0',
'contentType': 'application/vnd.amazonaws.card.generic',
'genericAttachments': [
{
'title': 'title1',
'subTitle': 'subtitle',
"buttons":[
{
"text":"button 1",
"value":"value 1"
},
{
"text":"button 2",
"value":"value 2"
},
{
"text":"button 3",
"value":"value 3"
}
]
}
]
}
}
}
print(val)
return val
def lambda_handler(event, context):
slots = event['currentIntent']['slots']
empidemployee= event['currentIntent']["slots"]["empidemployee"]
latestdesc= event['currentIntent']["slots"]["latestdesc"]
latestservice= event['currentIntent']["slots"]["latestservice"]
latestimpactvalue= event['currentIntent']["slots"]["latestimpactvalue"]
latesturgency= event['currentIntent']["slots"]["latesturgency"]
basicinfo=event['currentIntent']["slots"]["basicinfo"]
val=close()
return val
解决方案
我相信你的问题是版本号。尝试将其设置为1
或'1'
。
我找不到一个明确的解释,但至少这里有一些证据:
来自 AWS 示例文档:动态生成响应卡
responseCard: {
"version": 1,
...
}
我还深入研究了您正在使用的 lex-web-ui 文件,并且在lex-web-ui.js文件中它具有以下内容:
shouldDisplayResponseCard: function shouldDisplayResponseCard() {
return this.message.responseCard && (this.message.responseCard.version === '1' || this.message.responseCard.version === 1) && this.message.responseCard.contentType === 'application/vnd.amazonaws.card.generic' && 'genericAttachments' in this.message.responseCard && this.message.responseCard.genericAttachments instanceof Array;
},
并专门检查(this.message.responseCard.version === '1' || this.message.responseCard.version === 1)
以显示。
推荐阅读
- python - 为什么 mypy 认为缺少库导入?
- excel - 数据验证删除包含公式的空白单元格
- c# - 源数组不够长。检查 srcIndex 和长度,以及数组的下限
- python-3.x - Arduino 和 Python (3.x) 之间的 Serial.read() 和 Struct.pack / 串行通信问题
- ansible - 如何仅在ansible中只发送文件路径?
- xml - 如何直接将 xml 字符串加载到数据集?而不是从 xml 文件加载?
- android - 如何在 HERE 地图 android 中获取持续时间
- javascript - Webhook 到来自 firebase 云功能的不和谐 url
- python - 使用多索引将数据帧从长格式重塑为宽格式
- python - 如何从 python 中的 base64 编码数据中了解文件的 MIME 类型?