如何将 Bolt 事件与较新的 Slack API 清单一起使用?
How to use Bolt events with the newer Slack API manifests?
我正在使用 Bolt 构建一个 Slack 应用程序,我已经掌握了使用套接字模式的基础知识。文档说套接字模式应用程序是 not allowed in the public directory, which I do want my App in when it's ready. I've now turned off socket mode and got ngrok working as described here。 Slack 无论如何都能验证 url。
但是不起作用的是斜杠命令。清单编辑器说 url 是斜杠命令所必需的,但它如何与 bolt 对齐?某处有更好的非套接字模式文档吗?似乎每个使用 bolt 的例子都说“让我们使用套接字模式,这很简单”。
清单部分:
slash_commands:
- command: /sb
url: https://[my url].ngrok.io/slack/command
示例代码:
const { App } = require('@slack/bolt');
const express = require('express');
const app = express();
const boltApp = new App({
signingSecret: config.slackApp.signingSecret,
token: config.slackApp.token,
endpoints = '/'
});
app.use('/slack/events', boltApp.receiver.router);
我通过以下组合得到了这个:
- 将清单中的每个 url(slash_commands、event_subscriptions、交互性)设置为 https://foo.ngrok.io/slack/
- 将 Bolt 附加到现有的 Express 应用程序,尝试按照 this PR 在
ExpressReceiver
上使用 app
and/or router
配置道具,但奇怪的是工作是将 Express 应用程序放入 router
- 像下面这样设置 Bolt
示例代码:
const expressApp = express();
...
const boltReceiver = new ExpressReceiver({
router: expressApp,
signingSecret: SLACK_SIGNING_SECRET,
endpoints: '/slack'
});
const boltApp = new App({
token: SLACK_BOT_TOKEN,
receiver: boltReceiver,
appToken: SLACK_APP_TOKEN,
socketMode: false,
});
我正在使用 Bolt 构建一个 Slack 应用程序,我已经掌握了使用套接字模式的基础知识。文档说套接字模式应用程序是 not allowed in the public directory, which I do want my App in when it's ready. I've now turned off socket mode and got ngrok working as described here。 Slack 无论如何都能验证 url。
但是不起作用的是斜杠命令。清单编辑器说 url 是斜杠命令所必需的,但它如何与 bolt 对齐?某处有更好的非套接字模式文档吗?似乎每个使用 bolt 的例子都说“让我们使用套接字模式,这很简单”。
清单部分:
slash_commands:
- command: /sb
url: https://[my url].ngrok.io/slack/command
示例代码:
const { App } = require('@slack/bolt');
const express = require('express');
const app = express();
const boltApp = new App({
signingSecret: config.slackApp.signingSecret,
token: config.slackApp.token,
endpoints = '/'
});
app.use('/slack/events', boltApp.receiver.router);
我通过以下组合得到了这个:
- 将清单中的每个 url(slash_commands、event_subscriptions、交互性)设置为 https://foo.ngrok.io/slack/
- 将 Bolt 附加到现有的 Express 应用程序,尝试按照 this PR 在
ExpressReceiver
上使用app
and/orrouter
配置道具,但奇怪的是工作是将 Express 应用程序放入router
- 像下面这样设置 Bolt
示例代码:
const expressApp = express();
...
const boltReceiver = new ExpressReceiver({
router: expressApp,
signingSecret: SLACK_SIGNING_SECRET,
endpoints: '/slack'
});
const boltApp = new App({
token: SLACK_BOT_TOKEN,
receiver: boltReceiver,
appToken: SLACK_APP_TOKEN,
socketMode: false,
});