如何在 Slack Bolt 上监听模态提交?

How to listen for Modal submission on Slack Bolt?

我已经看了一天的文档,仍然无法弄清楚这个简单的问题:什么是@slack/bolt ^2.3.0 方法,用于监听一个模态提交?

const slackbot = new App({ token, signingSecret });

slackbot.shortcut(
  "open_modal",
  async ({ ack, body, client, context, payload }) => {
    await ack();
    const result = await client.views.open({ ... });
  }
);

slackbot.METHOD_HERE(ID_HERE,
  async ({ ack }) => {
    ack();
    // handle modal submitted data here...
  }
);

上面代码中 METHOD_HEREID_HERE 的值是什么? 我可以通过全局快捷方式菜单毫无问题地打开模式;但似乎无法弄清楚如何捕获用户提交的模态。

例如,这从不捕获任何提交:

  slackbot.view("open_modal", async ({ ack }) => {
    ack();
    // do things here...
  });

您需要使用创建模态视图时使用的callback_id

slackbot.shortcut(
  "open_modal",
  async ({ ack, body, client, context, payload }) => {
    await ack();

    const result = await client.views.open({
      trigger_id: body.trigger_id,

      view: {
        type: "modal",
        
        callback_id: "YOUR_CALLBACK_ID", // <= listen for this ID

        title: {
          type: "plain_text",
          text: "Modal Title",
        },

        blocks: [ ... ],
      },
    });
  }
);

然后,要听取上述模式的提交,请使用:

app.view('YOUR_CALLBACK_ID', optionalMiddleWareFunction, async ({ payload }) => {
  const submittedValues = payload.view.state.values
  // do stuff with submittedValues
});

callback_id 是您在创建模式视图时定义的 ID。你可以看一个例子 here.

可以阅读对应的官方文档here