Slack Slash commands error: failed with the error "operation_timeout"

Slack Slash commands error: failed with the error "operation_timeout"

我正在使用 Slack Slash 命令向我的 AWS Lambda python 应用程序发送请求。

然而,在发送命令后,Slack 正在返回消息 failed with the error "operation_timeout":

尽管我收到了这条消息,但我的请求已成功发送,工作已完成。

我只是想知道如何摆脱 slack 发送的这条消息。

我知道 Slack 需要 HTTP POST 200 OK 作为确认响应 link here 但我确实在收到有效负载时发送了一个,如下所示:

lambda_handler.py

def slack_acknowledgment_response(resonse_url):

    # Make API Call to Slack API
    requests.post(
        resonse_url, 
        {'text': 'Test'}
    )


# This is my main event
def main(event, context):

    payload = parse_qs(event['postBody'])

    response_url = payload['response_url'][0]

    slack_acknowledgment_response(response_url)

    time.sleep(5)

我故意添加了 5 秒的睡眠时间,因为如果我的脚本运行时间超过 3 秒,我会收到此错误,即使我已经在 3 秒之前发送了确认。

有人可以帮忙吗?

正如你在link中所说,slack说the 200 response message must be received within 3000ms (3 seconds). However, I think you're misinterpreting the expectation. It want's the 200 response to the request Slack sent to you. You can send the POST to the response_url within 30 seconds,但它仍然需要在3秒内进行初始响应。

如果您预计该过程需要超过 3 秒,您可能应该想出一种方法来进行异步处理。例如,将您在 Lambda 中收到的作业排队到 SQS 队列,然后使用通知的 response_url 发送响应(只要您可以在 30 秒内处理)。

您可能想查看 the answers to this question 以了解如何让您的 Lambda 函数 return 立即响应,然后通过第二个 Lambda 函数进行异步处理。