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