See example application at packages/nestjs-slack-example-app directory.
A NestJS microservice transport for Slack Bolt Apps.
A NestJS microservice transport for Slack Bolt Assistant.
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
This transport is built on top of Slack
transport. It provides all Slack
transports features and provide decorators for the assistant application.
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
Example of a Slack controller with listener for action and a command.
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
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