如何在 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_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/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。