본문 바로가기

Tool/Slack

Slack 봇] 봇 만들기 - 2 [Slash Command 확장]

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 를 사용할 수 있습니다.

그룹핑하기 편해질 것 같네요.