如何将Bolt事件与较新的Slack API清单一起使用



我正在使用Bolt构建一个Slack应用程序,并且我已经掌握了使用套接字模式的基础知识。文档说套接字模式的应用程序不允许在公共目录中,我确实希望我的应用程序在准备好后进入公共目录。我现在已经关闭了套接字模式,并使ngrok按此处所述工作。Slack仍然能够验证url。

但无效的是斜杠命令。清单编辑器说url是斜杠命令所必需的,但这与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);

螺栓

Slack应用程序清单

我通过以下组合实现了这一点:

  • 将清单中的每个url(slash_commands、event_subscriptions、交互性(设置为https://foo.ngrok.io/slack/
  • 将Bolt连接到现有的Express应用程序,试图按照此PR在ExpressReceiver上使用app和/或router配置道具,但奇怪的是,将Express应用程序放入router
  • 设置螺栓,如下所示

示例代码:

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,
});

最新更新