首页 > 解决方案 > lambda 中的 Python slack_bolt 斜杠命令失败 - dispatch_unknown_error

问题描述

我正在使用 Python 的 slack_bolt 库构建一个 slack 机器人。我已经使用 slack_bolt 库创建了 zip 文件,并将其上传到 lambda 函数,负责:

lambda 函数的代码如下(取自此处

from slack_bolt import App
from slack_bolt.adapter.aws_lambda import SlackRequestHandler

# process_before_response must be True when running on FaaS
app = App(process_before_response=True)

def respond_to_slack_within_3_seconds(body, ack):
    text = body.get("text")
    if text is None or len(text) == 0:
        ack("Usage: /start-process (description here)")
    else:
        ack(f"Accepted! (task: {body['text']})")

import time
def run_long_process(respond, body):
    time.sleep(5)  # longer than 3 seconds
    respond(f"Completed! (task: {body['text']})")

app.command("/start-process")(
    ack=respond_to_slack_within_3_seconds,  # responsible for calling `ack()`
    lazy=[run_long_process]  # unable to call `ack()` / can have multiple functions
)

def handler(event, context):
    slack_handler = SlackRequestHandler(app=app)
    return slack_handler.handle(event, context)

斜杠命令已使用用于启用 slack 事件的相同 api-gateway url 创建(作为 slack 应用程序创建过程的一部分)

执行 /start-process 斜杠命令时出现错误

/start-process 失败并出现错误“dispatch_unknown_error” 在此处输入图像描述

我意识到剪断的代码没有引用秘密,所以我添加了以下几行(但仍然有相同的错误)

app = App(
    token=os.environ.get("SLACK_BOT_TOKEN"),
    signing_secret=os.environ.get("SLACK_SIGNING_SECRET")
)

在 Cloudwatch 中,我没有找到有关此错误原因的有用信息。在此处输入图像描述

奇怪的是,除了 lambda 测试函数似乎成功之外,它在此处返回 404 输入图像描述

有什么想法吗?非常感谢!

标签: pythonaws-lambdaslack-apislack-commands

解决方案


推荐阅读