slack - 如何在 Slack Bolt 上监听 Modal 提交?

标签 slack slack-api

我已经浏览了一天的文档,但仍然无法弄清楚这个简单的问题:用于监听 Modal 提交的 @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 .

关于slack - 如何在 Slack Bolt 上监听 Modal 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64080895/

相关文章:

webhooks - 松弛传入 webhook - 将消息发送到另一个 channel

python - 将装饰器与 Python Slack API 一起使用

python - 为什么 Excel 文件以 zip 文件形式上传?

javascript - 是否有可用于 “Share on Slack” 按钮的 URL?

node.js - 自定义 Slack 命令参数

C# 'Cannot access a disposed object' 访问 Slack WebAPI 时出错 - 线程或其他什么?

node.js - 单击后如何禁用 slackbot 按钮

node.js:WAITING所有线程完成

jenkins - 如何访问 Jenkins Pipeline 项目中的 Junit 测试计数

aws-lambda - API 网关上的 API key 与斜杠命令一起使用