Mattermost์ v5.6์์ ์ถ๊ฐ๋ interactive dialog
๋ ์ฌ์ฉ์์๊ฒ์ ๋ ๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ์ํด ๋ง๋ค์ด์ก๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ์์๋ค๋ก๋, HTML์ <input>
ํ
๊ทธ์ ๊ธฐ๋ฅ๋ค๊ณผ ์ ์ฌํ text, select, textarea ์ด๋ ๊ฒ ์ธ๊ฐ์ง๊ฐ ํ์ฌ ๊ตฌํ ๊ฐ๋ฅํ๋ค. text๋ ์งง์ ๋ฌธ์์ด์, select๋ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ํตํด ๋ฆฌ์คํธ์์ ํ๊ฐ์ง ์์๋ฅผ, textarea๋ ์ฅ๋ฌธ์ ๋ฌธ์์ด์ ๋ฐ์๋ ์ฌ์ฉํ ์ ์๋ค. ํด๋น ์์ ๋ Mattermost server๋ก dialog๋ฅผ ์ด๋๋ก ์์ฒญํ๊ณ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฐ๋ค์ ์๋ฒ ๋ก๊ทธ๋ก printํ๋ ๋จ์ํ ์์ ์ด๋ค. ์๋ฒ๋ Node.js
๋ฅผ ํตํด ๊ตฌ๋ํ๋ค.
interactive dialog
์ ๋์ ์์๋ ์๋ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
์์ฆ๋ค์ด "~๋ก ๋ก๊ทธ์ธํ๊ธฐ" ๊ฐ ๋ง์์ง๊ณ ์๋ค. ํ์ด์ค๋ถ์ด๋ ๊ตฌ๊ธ์ด ๋ํ์ ์ด๊ณ , ํ๊ตญ์์๋ ๋ค์ด๋ฒ๋ ๋ง์ด ์ฌ์ฉํ๋ฉฐ ๊ฐ๋ฐ์ ๊ด๋ จ ์น์์๋ ๊นํ๋ธ๋ ๊ปด์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๋ฐ ์์ ๋ค๋ฅธ ์๋น์ค๋ฅผ ํตํด ์ธ์ฆํ๋ ๋ฐฉ์์, OAuth ์ธ์ฆ ๋ฐฉ์์ด๋ผ๊ณ ํ๋ ๋ชจ์์ด๋ค. ๋ด๊ฐ ํ์ฌ ์ ๋ฌด๋ฅผ ์ํด ์ฌ์ฉํ๋ ๋ช๋ช ์ํํธ์จ์ด๋ ์ด๋ฌํ ์ธ์ฆ์ ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ๊ธ์์๋ ๊ทธ๋ฌํ ์ธ์ฆ์ ๊ตฌํํ์ง๋๊ฒ ์๋๋ผ ๊ทธ๋ฌํ ์ธ์ฆ์ ์ฌ์ฉํด ๋ณด์๋ ๊ฒ์ ๋ชฉ์ ์ ๋๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก ์ธ์ฆํ๋์ง๋ฅผ ์ง์ ์ฌ์ฉํด๋ณด๊ณ OAuth๋ฐฉ์ ์ธ์ฆ์ ์ ์ฐจ๋ฅผ ์์๋ณด๋ ๊ธฐํ๋ ๋ ๊ฒ์ด๋ค.
์์ ๊ฐ์ด ๋ฒํผ์ ๋๋ฅด๋ฉด Github์์ ์ธ์ฆ์ ์คํํ๊ณ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋์์ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค.
์ด ๊ธ์ ์ดํดํ๊ธฐ ์ํ ์ ํ์ง์
- React
- NPM
- curl์ด๋ request๋ชจ๋๊ณผ ๊ฐ์ ์์ฒญ๊ด๋ จ ์ง์
- Javascript์ ๋ํ ์ง์
- FCM์ httpsํน์ localhost์์๋ง ๋์ํ๋ฉฐ http์์๋ ๋์ํ์ง ์์ต๋๋ค.
๋ง์ ํ์ฌ๋ค์ด ์น์ฑ์ ๊ตฌ์ถํ ๋ React๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์์งํ ์ฐ๋ฆฌ๋๋ผ๋ ์์ง๋ frontend ํ๋ ์์ํฌ๋ณด๋ค๋ ์ ํต์ ์ธ ๋ฐฉ์์ ์น์ ์ ํธํ๋ ๊ฒฝํฅ์ด ์๋ ๊ฒ ๊ฐ์ง๋ง ์คํํธ์ ๊ณผ ๊ฐ์ ๋ง์ ์ ์ ํ์ฌ๋ค์ด React๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ๋น ๋ฅธ ์น ๊ตฌ์ถ์ ์ํด Google์ด๋ AWS์ ์๋น์ค๋ฅผ ๋ง์ ์ฌ์ฉํ๋๋ฐ์, FCM๋ push notification์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ฃผ๋ Firebase ์๋น์ค์ ํ๋์ ๋๋ค. ์ด๋ฆ๋ถํฐ Firebase Cloud Messaging(FCM)์ด์ฃ . ์ด ๊ธ์ ํตํด์๋ ์์ฃผ ๊ฐ๋จํ ์๋ฆผ์๋น์ค ๊ตฌ์ถ์ ๋ํด์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฒ์ฒํ ํ๋ฒ ์์๋ณด๋๋ก ํ์ฃ .