【问题标题】:How to listen for Modal submission on Slack Bolt?如何在 Slack Bolt 上收听 Modal 提交?
【发布时间】:2020-09-26 17:55:26
【问题描述】:

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

【问题讨论】:

    标签: slack slack-api


    【解决方案1】:

    您需要使用创建模态视图时使用的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: [ ... ],
          },
        });
      }
    );
    

    然后,要收听上述 Modal 上的提交,请使用:

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

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

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

    【讨论】:

    • 谢谢,我建议对答案进行编辑。如果您可以将答案改进得更具体,我会将您的回复标记为解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2020-10-24
    • 2023-01-04
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多