๐Ÿ’ฌ

Slack Socket Mode๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜?

Webhook ์—†์ด ์•„์›ƒ๋ฐ”์šด๋“œ WebSocket์œผ๋กœ ์ด๋ฒคํŠธ ์ˆ˜์‹ 

Slack์€ ์›๋ž˜ Webhook(Event Subscriptions)์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ–ˆ์ง€๋งŒ, ๊ณต๊ฐœ URL์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Socket Mode๋Š” Bot ์„œ๋ฒ„๊ฐ€ Slack์— ์•„์›ƒ๋ฐ”์šด๋“œ WebSocket ์—ฐ๊ฒฐ์„ ๋จผ์ € ์ˆ˜๋ฆฝํ•˜๊ณ , Slack์ด ๊ทธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ pushํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ URL, SSL ์ธ์ฆ์„œ, ๋ฐฉํ™”๋ฒฝ ์„ค์ •์ด ๋ชจ๋‘ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ apps.connections.open API๋กœ WebSocket URL์„ ๋ฐ›์•„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐ ๋‹ค์ด์–ด๊ทธ๋žจ

์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๋‹จ๊ณ„
๐Ÿค–
๋‚ด Bot ์„œ๋ฒ„
๋ฐฉํ™”๋ฒฝ ๋’ค / ๋กœ์ปฌ
โ‘  apps.connections.open wss://... URL ์ˆ˜์‹ 
โ‘ก WS ์—ฐ๊ฒฐ
→ ์•„์›ƒ๋ฐ”์šด๋“œ
๐Ÿ’ฌ
Slack
์ด๋ฒคํŠธ + Web API
์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„
๐Ÿค–
๋‚ด Bot ์„œ๋ฒ„
โ‘ฃ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
โ‘ข event push (WS)
โ‘ค acknowledge (3์ดˆ ๋‚ด)
โ‘ฅ Web API ์‘๋‹ต
๐Ÿ‘ค
์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ
๋ฉ”์‹œ์ง€, ์Šฌ๋ž˜์‹œ ์ปค๋งจ๋“œ ๋“ฑ
ํ•ต์‹ฌ: Bot์ด ์•„์›ƒ๋ฐ”์šด๋“œ WebSocket์„ ์—ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐœ URL / ngrok ๋ถˆํ•„์š”
Socket Mode vs Webhook ๋น„๊ต
Socket Mode
Webhook (Event API)
๊ณต๊ฐœ URL ๋ถˆํ•„์š”
๊ณต๊ฐœ URL ํ•„์ˆ˜
์•„์›ƒ๋ฐ”์šด๋“œ WebSocket
์ธ๋ฐ”์šด๋“œ HTTP POST
๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ”๋กœ ๊ฐ€๋Šฅ
ngrok ๋“ฑ ํ„ฐ๋„ ํ•„์š”
์—ฐ๊ฒฐ ์œ ์ง€ ํ•„์š”
Stateless

๋™์ž‘ ํ๋ฆ„

1

Bot์ด apps.connections.open API ํ˜ธ์ถœ โ†’ ์ž„์‹œ WebSocket URL ์ˆ˜์‹ 

2

Bot์ด ํ•ด๋‹น URL๋กœ WebSocket ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ (์•„์›ƒ๋ฐ”์šด๋“œ)

3

Slack์—์„œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ (๋ฉ”์‹œ์ง€, ์Šฌ๋ž˜์‹œ ์ปค๋งจ๋“œ, ์ธํ„ฐ๋ž™์…˜ ๋“ฑ)

4

Slack์ด WebSocket์œผ๋กœ ์ด๋ฒคํŠธ payload๋ฅผ Bot์— push

5

Bot์ด ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , acknowledge ์‘๋‹ต ์ „์†ก (3์ดˆ ๋‚ด)

6

ํ•„์š” ์‹œ Slack Web API๋กœ ๋ฉ”์‹œ์ง€ ์ „์†ก/์—…๋ฐ์ดํŠธ

์žฅ์ 

  • ๊ณต๊ฐœ URL ๋ถˆํ•„์š”
  • ๋ฐฉํ™”๋ฒฝ/NAT ๋’ค์—์„œ ๋™์ž‘
  • ngrok ์—†์ด ๋กœ์ปฌ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • SSL ์ธ์ฆ์„œ ๋ถˆํ•„์š”

๋‹จ์ 

  • ์—ฐ๊ฒฐ ์œ ์ง€ ํ•„์š” (30์ดˆ ping)
  • ์—ฐ๊ฒฐ ๋Š๊น€ ์‹œ ์ด๋ฒคํŠธ ์œ ์‹ค ๊ฐ€๋Šฅ
  • ๋Œ€๊ทœ๋ชจ ์•ฑ์—๋Š” ๋ถ€์ ํ•ฉ (์—ฐ๊ฒฐ ์ˆ˜ ์ œํ•œ)
  • Webhook ๋Œ€๋น„ ๋””๋ฒ„๊น… ๋„๊ตฌ ๋ถ€์กฑ

์‚ฌ์šฉ ์‚ฌ๋ก€

์‚ฌ๋‚ด Slack Bot ๊ฐœ๋ฐœ ๋ฐฉํ™”๋ฒฝ ๋’ค Bot ์šด์˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Bot ํ…Œ์ŠคํŠธ ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ Bot (๊ณต๊ฐœ URL ๋…ธ์ถœ ๋ถˆ๊ฐ€)