我正试图在点击后传递模态上输入框的值"提交";。但我不知道如何获得价值。我已经搜索了ack,body,client,payload,但我找不到。
我已经在松弛的API页面上注册了快捷方式。
此外,我也不知道如何关闭模态。你能帮我吗?
这是我的密码。
import { App, BlockAction, ButtonAction, InputBlock } from "@slack/bolt";
const app = new App({
appToken: SLACK_APP_TOKEN,
token: SLACK_BOT_TOKEN,
socketMode: true
});
// ....
app.action('update-today-attendance', async ({ ack, body, client, payload }) => {
await ack();
const values = (<ButtonAction>(<BlockAction>body).actions[0]).value.split(' / ');
const result = await client.views.open({
trigger_id: (<BlockAction>body).trigger_id,
view: {
type: "modal",
callback_id: 'update-today-attendance-button-clicked',
title: {
"type": "plain_text",
"text": "TITLE",
"emoji": true
},
submit: { // ⬅️ Here, Submit button
"type": "plain_text",
"text": "Submit",
"emoji": true
},
"close": {
"type": "plain_text",
"text": "Cancel",
"emoji": true
},
blocks: [
{
"type": "input", // ⬅️ Here is input!
"element": {
"type": "plain_text_input",
"action_id": "plain_text_input-action",
},
"label": {
"type": "plain_text",
"text": "memo",
"emoji": true
}
}
]
}
});
});
app.view('update-today-attendance-button-clicked', async ({ ack, body, client, payload }) => {
const userId = body.view.title.text.split(' - ')[1];
const adminName = body.user.name;
// ⬅️ Here, I want to get value of input
const response = await axios.put(
`${SERVER_URL}/today/${userId}`,
{ adminName, memo: '????' }
);
// ⬅️ Here, I want to close modal
})
app.start().catch((error) => {
console.error(error);
process.exit(1);
});
在app.view
订阅中调用await ack()
后,Modal将自动关闭。请记住,它应该在用户提交模态后的3秒内完成。
用户提供的数据应在view.state.values
中找到。如果为空,请检查模态的块是否为input
类型。