#javascript #bots #slack-api #slack-block-kit
Вопрос:
Дело в том, что у меня есть этот первый фрагмент кода, в котором он отправляет мне два ввода: один для добавления встречи, а второй для ее удаления. Я оставляю изображение под этим кодом, чтобы вы могли его визуализировать.
@Command('/echo')
async appontmentCommand({ ack, say }) {
await ack();
try {
await say({
type: 'home',
blocks: [
{
type: 'section',
text: {
type: 'plain_text',
text: 'Ici, vous pouvez ajouter ou supprimer votre rendez-vous manuellement.',
emoji: true,
},
},
{
type: 'divider',
},
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'Pour ajouter un rendez-vous.',
},
accessory: {
type: 'button',
text: {
type: 'plain_text',
text: 'Ajouter',
emoji: true,
},
value: 'click_me_123',
action_id: 'button-action-add',
},
},
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'Pour supprimer un rendez-vous',
},
accessory: {
type: 'button',
text: {
type: 'plain_text',
text: 'Supprimer',
emoji: true,
},
value: 'click_me_123',
action_id: 'button-action',
},
},
],
});
console.log('Works correctly $¤¤$');
} catch (error) {
console.error('error right here $¤¤$: ',error);
}
}
ИЗОБРАЖЕНИЕ С РЕЗУЛЬТАТОМ ПОСЛЕДНЕГО ФРАГМЕНТА КОДА ПРЯМО ЗДЕСЬ
Когда я нажимаю на кнопку добавить, на изображении которой написано «Ajouter», открывается модал с этими метками и входными данными, и это код, который позволяет мне это сделать.
@Action('button-action-add')
async addAppointmentAction({ ack, body }) {
await ack();
try {
const result = await this.app.client.views.open({
token: process.env.SLACK_BOT_TOKEN,
trigger_id: body.trigger_id,
view: {
type: 'modal',
callback_id: 'view_1',
title: {
type: 'plain_text',
text: 'Add rdv',
},
submit: {
type: 'plain_text',
text: 'Add',
},
close: {
type: 'plain_text',
text: 'Cancel',
emoji: true,
},
blocks: [
{
type: 'input',
element: {
type: 'datepicker',
initial_date: '' format(new Date(), 'yyyy-MM-dd'),
placeholder: {
type: 'plain_text',
text: 'Select a date',
emoji: true,
},
action_id: 'datepicker-action',
},
label: {
type: 'plain_text',
text: 'Day appointment',
emoji: true,
},
},
{
type: 'input',
element: {
type: 'plain_text_input',
action_id: 'plain_text_input-action',
placeholder: {
type: 'plain_text',
text: 'Select a hour, ex: 14:30',
emoji: true,
},
},
label: {
type: 'plain_text',
text: 'Time of appointment',
emoji: true,
},
},
{
type: 'input',
element: {
type: 'plain_text_input',
action_id: 'plain_text_input-action',
placeholder: {
type: 'plain_text',
text: 'Issue',
emoji: true,
},
},
label: {
type: 'plain_text',
text: 'Issue ',
emoji: true,
},
},
],
},
});
console.log(body.trigger_id);
} catch (error) {
console.error(error);
}
}
ИЗОБРАЖЕНИЕ С РЕЗУЛЬТАТОМ ПОСЛЕДНЕГО ФРАГМЕНТА КОДА ПРЯМО ЗДЕСЬ
Но когда я нажимаю на кнопку «Отправить» (там написано «Добавить», но это кнопка sumbit), чтобы получить результаты в фоновом режиме, я получаю эту ошибку: ОШИБКА, КОТОРУЮ я ПОЛУЧАЮ
Я знаю, что вам нужно нажать, чтобы иметь возможность использовать метод view.sumbition, но я понятия не имею, как это сделать, кто-нибудь мог бы мне в этом помочь.
Ответ №1:
Чтобы прочитать полезную нагрузку модального представления, вам необходимо обработать view_submission
// Listen for view_submission modal events
app.view(callbackId, fn);
Проверьте это : https://slack.dev/bolt-js/concepts#view_submissions
Технические подробности: https://github.com/slackapi/bolt-js#прослушивание событий
Комментарии:
1. Но сначала я должен надавить, не так ли?
2. Если ваше модальное окно отображается в пользовательском интерфейсе, это означает, что push был обработан. Теперь вам нужно принять значение после нажатия кнопки «Добавить» отправить. Попробуйте это и дайте мне знать, если это сработает.
3. Я не могу найти способ сделать это, поэтому я пытался сделать это до вашего последнего сообщения… Как бы ты это сделал
4. ваша функция будет выглядеть следующим образом : app.view(‘view_1’, асинхронный ({ ack, тело, представление, клиент }) => { } . вам также необходимо добавить block_id в свое представление. тогда вы можете использовать что-то вроде : const val = просмотр[‘состояние’][‘значения’][‘идентификатор блока’][‘выбор даты-действие’]