Python 我的slack应用程序似乎无法进行交互
我是slack应用程序开发的新手。在本页之后:,我正在尝试创建一个简单的交互式slack应用程序Python 我的slack应用程序似乎无法进行交互,python,aws-lambda,aws-api-gateway,slack,slack-api,Python,Aws Lambda,Aws Api Gateway,Slack,Slack Api,我是slack应用程序开发的新手。在本页之后:,我正在尝试创建一个简单的交互式slack应用程序 由斜杠命令启动 可以通过按钮与用户交互 我使用AWSAPI网关和Lambda作为后端。Lambda函数是用Python 3.6编写的 我成功地创建了斜杠命令,但在按下按钮后更新消息失败 我的应用程序的精确结构 当我在slack频道中键入slash命令/test时,我的应用程序向API网关发出post请求(https://xxx.execute-api.ap-northeast-1.amazona
- 由斜杠命令启动
- 可以通过按钮与用户交互
/test
时,我的应用程序向API网关发出post请求(https://xxx.execute-api.ap-northeast-1.amazonaws.com/prod/test
)和lambda函数通过按钮返回以下响应
lambda函数如下所示:
导入json
导入日期时间
def lambda_处理程序(事件、上下文):
尝试:
答复={
“状态代码”:200,
“响应类型”:“在信道中”,
“区块”:[
{
“类型”:“节”,
“文本”:{
“类型”:“mrkdwn”,
“文本”:“这是一个带按钮的剖面块。”
},
},
{
“类型”:“操作”,
“要素”:[
{
“类型”:“按钮”,
“文本”:{
“类型”:“纯文本”,
“文本”:“按钮”,
“表情符号”:真的吗
},
“操作id”:“测试”
}
]
}
]
}
返回响应
例外情况除外,如e:
返回{“error”:str(e)}
按下按钮后,我的应用程序向另一个API网关发送post请求(https://xxx.execute-api.ap-northeast-1.amazonaws.com/prod/test2
)和另一个lambda函数接收如下请求
{
'type':'block_actions',
'team':{
'id':'xxx',
'domain':'xxx'
},
'user':{
'id':'xxx',
'username':'xxx',
'name':'xxx',
'team_id':'xxx'
},
'api_app_id':'xxx',
'token':'xxx',
'container':{
'type':'message',
'message_ts':'1564687520.001900',
'channel_id':'xxx',
'is_ephemeral':False
},
'trigger_id':'xxx.yyy.zzz',
'channel':{
'id':'xxx',
'name':'slack_app_test'
},
'message':{
'type':'message',
'subtype':'bot_message',
'text':"This content can't be displayed.",
'ts':'1564687520.001900',
'bot_id':'xxx',
'blocks':[
{
'type':'section',
'block_id':'ygl6',
'text':{
'type':'mrkdwn',
'text':"This is a section block with a button. {'token': 'xxx', 'team_id': 'xxx', 'team_domain': 'xxx', 'channel_id': 'xxx', 'channel_name': 'slack_app_test', 'user_id': 'xxx', 'user_name': 'mail', 'command': '/recommend', 'response_url': '<https://hooks.slack.com/commands/xxx/yyy/zzz>', 'trigger_id': 'xxx.yyy.zzz'}",
'verbatim':False
}
},
{
'type':'actions',
'block_id':'jlzD',
'elements':[
{
'type':'button',
'action_id':'test',
'text':{
'type':'plain_text',
'text':'Button',
'emoji':True
}
}
]
}
]
},
'response_url':'https://hooks.slack.com/actions/xxx/yyy/zzz',
'actions':[
{
'action_id':'test',
'block_id':'jlzD',
'text':{
'type':'plain_text',
'text':'Button',
'emoji':True
},
'type':'button',
'action_ts':'1564687524.157943'
}
]
}
当我查看上面lambda函数的Cloudwatch日志时,该函数似乎成功地向我的slack应用程序发送了一条消息
问题
我希望我的应用程序显示一条消息
Success按下按钮后,没有显示更新(仅显示加载动画)。有什么想法吗?Slack希望您除了发送响应外,还使用HTTP 200发送对按钮按下请求的确认响应。您正在返回None
,我认为这可能是问题所在。尝试用HTTP 200来响应。来源:Slack希望您除了响应之外,还为按钮按下请求发送一个HTTP 200确认响应。您正在返回None
,我认为这可能是问题所在。尝试用HTTP 200来响应。资料来源: