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)์ด์ฃ . ์ด ๊ธ์ ํตํด์๋ ์์ฃผ ๊ฐ๋จํ ์๋ฆผ์๋น์ค ๊ตฌ์ถ์ ๋ํด์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฒ์ฒํ ํ๋ฒ ์์๋ณด๋๋ก ํ์ฃ .
๋ธ๋ญ์ ์ด ๋ฌธ๋ฒ ์ค๋ช ์๋ฅผ ์ญ ๋ณด๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋ณธ ๋ถ๋ถ์ด๊ธฐ๋ ํฉ๋๋ค. ์ ๊ฐ ์ฝ๋๋ฅผ ๋ณด์ฌ๋๋ฆด ๋ ํ์ ์์์ ์ฝ๋๋ฅผ ๋ฃ์๋ ๊ฒ์ ๊ธฐ์ตํ์ค ๊ฒ๋๋ค. ๋ง์ฝ ๊ทธ ํ์ ์์๊ฐ ์๋๋ผ ๊ทธ๋ฅ ๊นํ ๊ธฐ์คํธ์ ์์ฑํ๋ค๋ฉด ์์์ ๋ณํ๋์ด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ค ์ ์์์ ๊ฒ๋๋ค. ์ด๊ฑธ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฌธ๋ฒ์ด ๋ฐ๋ก ์ฝ๋๋ธ๋ญ์ ๋๋ค. ์ฝ๋๋ธ๋ญ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ๋ถํฐ ์ฌ๋ผ๊ฐ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋จผ์ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์คํ์ด์ค๋ฐ๋ฅผ 4๋ฒ ๋๋ฅด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
for(i=0; i<10; i++) {
cout << โ๊ฒ์ํ๊ณ ์ถ๋คโ << endl;
๋งํฌ๋ ๋ง์ด ์ฌ์ฉํด๋ด์ ์์ค๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ก ๋ณด๋ด๊ฑฐ๋ ๋ค๋ฅธ ํ์ด์ฆ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ผ์ข ์ ์ฐ๊ฒฐ ํต๋ก์ ๋๋ค. ๋ณดํต์ ๊ทธ ํ์ด์ง์ ์ด๋ฆ์ด๋ ์ฃผ์๋ฅผ ๊ทธ๋๋ก ๋งํฌ๋ก ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋งํฌ๋ค์ด์ ๋น์ฐํ ๋งํฌ์ ๋ํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ง๊ธ๋ถํฐ ํ๋์ฉ ์์๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ์ ๊ฐ์ฅ ๊ฐ๋จํ ๋งํฌ ๋ฐฉ๋ฒ์ ๋๋ค. ๋จ์ํURL๋ง์ผ๋ก ๋งํฌ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ ๋๋ค.
https://gist.github.com/ninanung
์๋๋ 1์ฅ์์ ์ค๋ช ํ์ด์ผ ํ๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ์ฒ์ ๋งํฌ๋ค์ด์ ํ ๋ ๋๋์ฒด ์ด๋ป๊ฒ ์ค์ ๋ฐ๊พธ๋ ๊ฑด์ง ๋ชฐ๋ผ์ ์์ฒญ ํด๋งธ๊ฑฐ๋ ์. html์ <br>์ด๋<p>๋ฅผ ์ฌ์ฉํ์ง๋ง ๋งํฌ๋ค์ด์์๋ ๊ทธ๋ ๊ฒ ์ฌ์ฉํ๋๊ฑด ์ข ํ์ ํฉ๋๋ค. ๊ทธ๋ฅ ์๋์ฒ๋ผ enterํค๋ ์๋๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ํ ๊น์? ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
๋๋ ์๋ฆ๋ค์ด ๋๋น
๋ ๊ฒ๋ฅผ ํ์ง ํด๊ณ
์ธ์์ ์๋ฆ๋ต๊ฒ ๋ ๊ฑฐ์ผ
๋งํฌ๋ค์ด ๋ฌธ๋ฒ, ์ ๋ง ๊ฐ๋จํ์ง๋ง ๊ตฌ๊ธ๋ง์ ํด๋ ๋ญ๊ฐ ์ข ์ ๋งคํฉ๋๋ค. ์ค๋ช ์ด ๋ค๋ฅด๊ฑฐ๋ ๋ถ์กฑํ๊ฑฐ๋ ์ ๊ฐ์ ์ด๋ณด์๊ฐ ๋ณด๊ณ ๋ฐฐ์ฐ๊ธฐ ์ ๋งคํ ๊ฒฝ์ฐ๊ฐ ์ข ์์์ต๋๋ค. ๊ทธ๋์ ์ ์ค์ค๋ก์ ๋งํฌ๋ค์ด ๋ฌธ๋ฒ ๊ณต๋ถ๋ฅผ ์ํ ์ค์ต ๊ฒธ ๊ฐ์ด๋๋ฅผ ์ํด ๋ฌธ๋ฒ์ ๋ฆฌ๋ฅผ ์์ฑํด ๋ณด๊ณ ์ ํฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ด ์ ๋ฆฌ๋ ๊นํ๋ธ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ๋ก ํฉ๋๋ค.
๋จผ์ ์ ๋ชฉ์ ๋๋ค. ์ ๋ชฉ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค.
- ์ ๋ชฉ๊ณผ ํจ๊ป hr, ์ฆ ํธ๋ผ์ด์ฆ์ ๋ช ์์ ์ผ๋ก ๊ฐ์ด ์ด๋ค.