https://github.com/ziv/nestjs-slack
nestjs-slack-integration
https://github.com/ziv/nestjs-slack
ai assistant nestjs slack
Last synced: 3 months ago
JSON representation
nestjs-slack-integration
- Host: GitHub
- URL: https://github.com/ziv/nestjs-slack
- Owner: ziv
- License: mit
- Created: 2025-04-03T14:48:22.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-14T13:27:06.000Z (10 months ago)
- Last Synced: 2025-10-27T11:25:29.934Z (7 months ago)
- Topics: ai, assistant, nestjs, slack
- Language: TypeScript
- Homepage: https://ziv.github.io/nestjs-slack/
- Size: 714 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NestJS/Slack Integrations
See example application at
[packages/nestjs-slack-example-app](./packages/nestjs-slack-example-app/README.md)
directory.
### @xpr/nestjs-slack
A NestJS microservice transport for
[Slack Bolt Apps](https://github.com/slackapi/bolt-js).
### @xpr/nestjs-slack-assistant
A NestJS microservice transport for
[Slack Bolt Assistant](https://github.com/slackapi/bolt-js/blob/main/src/Assistant.ts).
## Usage
### Initialize Slack/Bolt application with the `Slack` transport:
```ts
const app = await NestFactory.createMicroservice(MyModule, {
strategy: new Slack({
slack: {
token: env.SLACK_BOT_TOKEN,
appToken: env.SLACK_APP_TOKEN,
},
}),
});
await app.listen();
```
📃 https://tools.slack.dev/bolt-js/getting-started
### Initialize Slack/Bolt Assistant application with the `SlackAssistant` transport:
This transport is built on top of `Slack` transport. It provides all `Slack`
transports features and provide decorators for the assistant application.
```ts
const app = await NestFactory.createMicroservice(MyModule, {
strategy: new SlackAssistant({
slack: {
token: env.SLACK_BOT_TOKEN,
appToken: env.SLACK_APP_TOKEN,
},
}),
});
await app.listen();
```
📃 https://tools.slack.dev/bolt-js/concepts/ai-apps
### Slack Application Controller
Example of a Slack controller with listener for action and a command.
```ts
import { SlackAction, SlackCommand, SlackController } from "@xpr/nestjs-slack";
@SlackController()
export class MyController {
@SlackAction("button-action")
async onAction({ ack, respond, payload }: SlackActionMiddlewareArgs) {
await ack();
await respond(`Button clicked! with payload ${JSON.stringify(payload)}`);
}
@SlackCommand("/ping")
async onPing({ ack, respond }: SlackCommandMiddlewareArgs) {
await ack();
await respond({
text: "pong!",
response_type: "in_channel",
});
}
}
```
📃 https://tools.slack.dev/bolt-js/concepts/event-listening
📃 https://tools.slack.dev/bolt-js/concepts/commands
### Slack Assistant Controller
```ts
import {
SlackController,
ThreadStarted,
UserMessage,
// `@xpr/nestjs-slack-assistant` re-export everything from `@xpr/nestjs-slack`
} from "@xpr/nestjs-slack-assistant";
@SlackController()
export class MyController {
// any `@xpr/nestjs-slack` decorator can be used here as well
@ThreadStarted()
async startThread(
{ say, setSuggestedPrompts }: AssistantThreadStartedMiddlewareArgs,
) {
await setSuggestedPrompts({ prompts: [/*...*/] });
await say("Hi, how can I help you?");
}
@UserMessage()
async message({ say, message }: AssistantUserMessageMiddlewareArgs) {
await say("You said: " + message.text);
}
}
```
📃 https://tools.slack.dev/bolt-js/concepts/ai-apps
---