【问题标题】:Slack API slash command - returns 502_service_error after the webhook is successfully usedSlack API 斜杠命令 - 成功使用 webhook 后返回 502_service_error
【发布时间】:2018-11-27 11:48:11
【问题描述】:

我构建了一个我运行的斜杠命令,我的服务器使用斜杠命令发出的 webhook URL 进行响应,消息发布到频道,但随后 Slack 显示一条私人消息说“该死 - 斜杠命令不起作用(错误信息:502_service_error)”

发生了什么让 Slack 认为我的命令失败了?我尝试添加即时响应,但仍然出现此错误。

代码是一个 AWS Lambda 函数,Slash 命令正在调用 AWS API Gateway 来访问它。

这是我的 Python 代码,它使用 requests 返回数据 -

response = requests.post(
    urllib.parse.unquote(response_hook), json={'attachments':[{'text': result, 'color': 'good'}], 'response_type': 'in_channel'},
    headers={'Content-Type': 'application/json'}
)

【问题讨论】:

  • 您是否使用状态码 200 从 slack 回复了初始 POST? 2xx 以外的任何内容都可能被视为错误。
  • 您能否发布导致这种行为的代码?这将使弄清楚那里发生的事情变得更容易,特别是因为有多种可能性如何回复斜杠命令。
  • 添加了更多细节和我用来将数据返回到 webhook 的代码。

标签: slack-api


【解决方案1】:

经过更多的挖掘,最终找出了答案。我需要在我的函数末尾添加一个特定的响应,让 Slack 知道消息已成功接收。下面是我用来解决问题的 Python 代码 -

return { "isBase64Encoded": True, "statusCode": 200, "headers": { }, "body": "" }

您可能必须在您的 API Gateway 设置中启用 Lambda 代理集成才能使其正常工作,但我默认已启用。

【讨论】:

  • 除此之外,最好检查您对 Slack 的请求是否不会导致一些验证错误。在我的例子中,我试图创建的 Slack 对话框的标题比预期的长 2 个字符(限制为 24 个)。看看dialog implementation section中的“顶级对话框属性”段落
  • 我已经坚持了一个多星期。我以为我用尽了所有回复!谢谢你。
【解决方案2】:

接受的答案是正确的,Slack 期望带有斜杠命令的“200”响应。在接收斜杠命令的 lambda 处理函数中使用包含的“回调”参数也可以。

callback(null);

回调的第一个参数是一个错误,所以如果没问题就传递'null'。 AWS doc Slack documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多