Как открыть всплывающее окно подтверждения после отправки модального представления в slack с помощью экспресс-приемника

#javascript #node.js #slack #slack-api #slack-block-kit

#язык JavaScript #node.js #слабина #slack-api #комплект для ослабления блока

Вопрос:

Я создаю один ярлык, используя модель слабого болта без гнезда. Поэтому я использовал URL-адрес перенаправления. каждый запрос этого ярлыка попадает на этот URL. после открытия и отправки модели представления я не смог открыть модель представления подтверждения.ниже приведен мой код, который я использовал для создания модального представления. Ребята, пожалуйста, помогите и заранее спасибо.

 receiver.router.post("/shortcut", async function (req, res,next) { req.on("data", async function (data) { let result = '';  try {  result = data.toString();  let decode = decodeURIComponent(result).substring(8);  let value = JSON.parse(decode)  console.log("decode", value);  if(value.type === "message_action"){    const config = {  method: 'post',  url:'https://slack.com/api/views.open',  headers: {  "Authorization": `Bearer ${process.env.SLACK_BOT_TOKEN}`,  "Content-type": "application/json"  },  data:{  "trigger_id": `${value.trigger_id}`,  "view": {  "type": "modal",  "callback_id": "new_display_modal",  "title": {  "type": "plain_text",  "text": "Add Note",    },  "submit": {  "type": "plain_text",  "text": "Submit",    },  "type": "modal",  "close": {  "type": "plain_text",  "text": "Cancel",    },  "blocks": [  {  "type": "divider"  },  {  "type": "section",  "text": {  "type": "plain_text",  "text": `${value.message.text}`,    }  },  {  "type": "section",  "text": {  "type": "plain_text",  "text": "This is a plain text section block.",    }  },  {  "dispatch_action": true,  "type": "input",  "element": {  "type": "plain_text_input",  "action_id": "plain_text_input-action"  },  "label": {  "type": "plain_text",  "text": "Enter ID",    }  }  ]  }  }  }  res.status(200).send(await axios(config).then( async function(response) {  // console.log("response1",(response.data));  })  .catch(function(err) {  console.log("error",err);  }))  }  else if(value.type === 'view_submission'){  // console.log("`${value.trigger_id}`",value.trigger_id);  const config = {  method: 'post',  url:'https://slack.com/api/views.update',  headers: {  "Content-type": "application/json",  "Authorization":`Bearer ${process.env.SLACK_BOT_TOKEN}`,  },  data:{  "view_id": `${value.view.id}`,  "hash":`${value.view.hash}`,  // "trigger_id":`${value.trigger_id}`,  "view": {  "type": "modal",  "title": {  "type": "plain_text",  "text": "hello",    },  "blocks": [  {  "type": "section",  "text": {  "type": "plain_text",  "text": "This is a plain text section block."  }  }  ],  // "callback_id":"new_display_modal",  "close": {  "type": "plain_text",  "text": "Close",  },  // "submit": {  // "type": "plain_text",  // "text": "Submit",    // },  }  }  }  res.status(200).send(await axios(config).then(function(response) {  console.log("response",(response.data));  })  .catch(function(err) {  console.log("error",err);  }))  }   } catch (error) {  console.log(error);  } })  

}); };