You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slack view_submission事件无法在斜杠命令触发的当前窗口发送消息

问题根源

你当前的实现问题是Modal提交事件的默认payload不会携带斜杠命令触发窗口的频道ID,直接传入用户ID发消息默认会打开机器人和用户的单独DM窗口,不会回到斜杠命令发起的原会话。

解决步骤

  1. 利用Modal的private_metadata字段透传原窗口信息
    你在触发Modal时预留的private_metadata字段就是用来存储自定义上下文的,直接把斜杠命令触发时的channel_id存在这个字段里即可。
  2. Modal提交后读取透传的频道ID发消息
    在view_submission回调中读取private_metadata里存的频道ID,作为chat_postMessage的channel参数传入。

修改后的代码示例

调整handle_command中Modal触发逻辑

@app.command("/jarvis")
def handle_command(body, ack, client, logger):
    logger.info(body)
    ack(text="Accepted!",
        blocks=[
            {
                "type": "section",
                "block_id": "b",
                "text": {
                    "type": "mrkdwn",
                    "text": ":white_check_mark: Accepting New Request!",
                },
            }
        ],
    )

    modal_block = open("modal.json", "r").read()

    res = client.views_open(
        trigger_id=body["trigger_id"],
        view={
            "type": "modal",
            "callback_id": "settings-modal",
            "title": {"type": "plain_text", "text": "Settings Form"},
            "submit": {"type": "plain_text", "text": "Submit"},
            "close": {"type": "plain_text", "text": "Cancel"},
            "blocks": modal_block,
            # 把原斜杠命令的频道ID存入private_metadata
            "private_metadata": body["channel_id"]
        },
    )
    logger.info(res)

调整view_submission回调逻辑

@app.view("settings-modal")
def view_submission(ack, body, client, logger):
    ack()
    logger.info(body["view"]["state"]["values"])
    # 读取透传的原窗口频道ID
    target_channel = body["view"]["private_metadata"]
    client.chat_postMessage(channel=target_channel, text="submitted, wait please!!!")

额外注意事项

  • 如果斜杠命令是在消息线程中触发的,你还可以把body["thread_ts"]也一起存入private_metadata,发消息时传入thread_ts参数就可以把响应发送到对应线程中。
  • 确保你的机器人拥有目标频道的发消息权限,如果是私有频道需要先把机器人邀请进频道才能正常发消息。

内容的提问来源于stack exchange,提问作者3e4r5t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:57:05