Slack 에서 제공하는 Bolt 라이브러리를 활용해서 하나의 URL로 모든 커멘드를 받을 수 있다.
동시에 어떠한 정보를 전달 받았는지 Payload와 같은 값을 전달 받을 수 있어 다양한 기능을 확장 할 수 있다.
WebServelt 설정
import com.slack.api.bolt.App
@WebServlet("/slack/events")
class SlackAppController(@Qualifier("slack event") app: App?) : SlackAppServlet(app) {
override fun service(req: HttpServletRequest?, resp: HttpServletResponse?) {
super.service(req, resp)
}
}
상기 코드는 일전에 세팅한 URL을 호출하면 Blot App 을 실행하도록 설정 합니다.
@Configuration
class SlackSlashEventConfig {
@Value(value = "\${slack.bot.token}")
private lateinit var token: String
@Value(value = "\${slack.signing.secret}")
private lateinit var signingSecret: String
@Bean(name = ["slack event"])
fun initSlackEvent(): App {
val appConfig: AppConfig = AppConfig.builder().singleTeamBotToken(token).signingSecret(signingSecret).build()
val app = App(appConfig)
app.command("/hello") { req: SlashCommandRequest?, ctx: SlashCommandContext ->
ctx.ack("너에게만 안녕?")
}
return app
}
}
App Bean 객체 생성 합니다.
이렇게 세팅이 완료된다면 /hello 커멘드 입력시 Slack Bolt App 이 실행 되며 Command 로 분기 처리가 가능해 집니다.
Slash Command를 추가할때 같은 Url /slack/events 를 사용할 수 있습니다.
그룹핑하기 편해질 것 같네요.
'Tool > Slack' 카테고리의 다른 글
Slack 봇] 봇 만들기 - 2 [Slash Commands 사용하기] (0) | 2023.03.24 |
---|---|
Slack 봇] 봇 만들기 -1 [메세지 전달] (0) | 2023.03.23 |
회사에서 Slack 효율적으로 사용하기: D-day 발표를 통한 사용법 공유 (0) | 2023.03.23 |