Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用松弛螺栓检测多用户选择的操作_Javascript_Slack_Slack Api_Slack Dialog - Fatal编程技术网

Javascript 无法使用松弛螺栓检测多用户选择的操作

Javascript 无法使用松弛螺栓检测多用户选择的操作,javascript,slack,slack-api,slack-dialog,Javascript,Slack,Slack Api,Slack Dialog,下面是一个简单的节点松弛应用程序,它向用户显示内置的多用户选择块元素。我想在用户单击输入中的submit按钮时处理该操作,因此我在块中设置了操作id,并根据文档中的示例添加了一个操作侦听器 然而,这一行动并没有被触发;ngrok显示传入的/slack/actions请求,但返回404 我错过了什么 const{App}=require('@slack/bolt'); const应用程序=新应用程序({ signingSecret:process.env.SLACK\u SIGNING\u SE

下面是一个简单的节点松弛应用程序,它向用户显示内置的
多用户选择
块元素。我想在用户单击输入中的submit按钮时处理该操作,因此我在块中设置了操作id,并根据文档中的示例添加了一个操作侦听器

然而,这一行动并没有被触发;ngrok显示传入的
/slack/actions
请求,但返回404

我错过了什么

const{App}=require('@slack/bolt');
const应用程序=新应用程序({
signingSecret:process.env.SLACK\u SIGNING\u SECRET,
令牌:process.env.SLACK\u BOT\u令牌,
});
app.event('app_home_opened',({event,say})=>{
说(`Hi!`);
常数块=[{
“类型”:“节”,
“文本”:{
“类型”:“mrkdwn”,
“文本”:“从列表中选择一个或多个项目”
},
“附件”:{
“类型”:“多用户选择”,
“操作id”:“测试操作”,
“占位符”:{
“类型”:“纯文本”,
“文本”:“选择项目”
},
}
}];
说({blocks});
});
应用程序操作('test_action',异步(请求、恢复)=>{
控制台日志(req);
控制台日志(res);
});
app.error(error=>{
控制台错误(error);
});
(异步()=>{
等待应用程序启动(process.env.PORT | | 3000);

})();所以我通过查看源代码找到了解决方案

据我所知,这在任何地方都没有文档记录,但如果您想为事件和操作指定单独的URL,您必须自己指定它们:

const app = new App({
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  token: process.env.SLACK_BOT_TOKEN,
  endpoints: {
    events: '/slack/events',
    actions: '/slack/actions'
  },
});

404表示您在Slack app management页面上配置的操作URL显然不正确。它似乎调用了当前不存在的端点,并且根据文档将交互组件url设置为
../slack/actions
。这就是博尔特希望将操作发送到的url吗?