(영문 버전은 여기에:English Version)
마이크로소프트 팀즈 (Microsoft Teams)에 대해서 들어본 적이 있으신가요?
많은 기업들과 학교들이 기관 내에서 커뮤니케이션과 협력을 위해서 팀즈라는 제품을 많이 쓰고 있는데요, 이 팀즈라는 어플리케이션은 무엇일까요?
마이크로소프트 팀즈 (이하 팀즈)는 채팅을 기본으로한 협력 플랫폼(chat-based collaboration platform)인데요, 문서 공유, 커뮤니케이션 그리고 온라인 미팅 등, 다른 사람들과 서로 협력할 때 유용한 기능과 툴을 사용할 수 있습니다.
팀즈 자체가 이러한 기능들을 제공하는 것 뿐만 아니라, 많은 API들을 제공해서 외부 어플리케이션 (third party applications)들이 팀즈 플랫폼과 연동될 수 있는 옵션도 제공하고 있습니다. 팀즈 플랫폼에서 작동하고자 하는 어플리케이션들은 다음과 같은 기능들을 구현해서 각자가 원하고자 하는 서비스를 제공할 수 있습니다.
각 앱은 저 위의 기능들 중에서 제공하고자 하는 서비스에 맞게 선택적으로 몇 가지를 선택하여 팀즈에서 제공하는 API를 사용해 팀즈와 연동시킬 수 있습니다.
오늘 이 포스트에서는 봇의 기능만을 가진 아주 간단한 앱을 만들어서 팀즈 플랫폼에 설치하여 사용하는 방법을 공유하고자 합니다. 이 포스트를 읽은 누군가에게 팀즈 앱을 만드는 프로젝트의 좋은 시작점이 되었으면 하는 바람입니다.
이 포스트에서 주어진 스탭을 다 마치시고 나시면, 여러분이 보낸 메세지를 똑같이 프린트 해주는, 에코 봇(Echo Bot)을 만들 수 있습니다.
만약 팀즈를 한번도 사용해보시지 않으셨다면, 먼저 팀즈 사인업을 시작하도록 하겠습니다. 마이크로소프트 팀즈는 무료버전을 제공해주는데요, 이 무료버전에서도 팀즈의 코어 기능들을 사용하실 수 있습니다. (팀즈 무료버전과 유료버전의 차이점에 대해서 아시고 싶으시다면, 여기에서 확인하실 수 있습니다.)
팀즈 무료버전 사인업은 다음 포스트에 있는 설명서 순서를 따라 하시면 사인업을 하실 수 있습니다:
Sign up for Teams free
만약 Microsoft 365 Developer Subscription을 이미 가지고 계시다면, 여기서 오늘 봇을 만들기 위한 태스팅 팀즈를 만드는 방법에는 두 가지 초이스가 있습니다.
(1) 지금 현재 가지고 있는 팀즈가 있으시다면, 같은 팀즈를 사용하실 수 있습니다.
(2) 또는 무료로 testing tenant을 만드시는 방법이 있습니다.
Creating a test tenant
섹션을 확인해주세요.)Note: 이 포스트에서 제공하는 봇 만들기 실습 후, 테스팅 목적으로 만들어진 팀즈 어카운트를 지우고 싶다면 여기 포스트에서 제공하는 스탭을 따라하시면 됩니다.
팀즈를 사인업 하신 후, 이제는 팀즈안에서 팀을 하나 만들어보도록 해봅시다. 비록 이 포스트에서는 봇을 1:1 chat에서 설치하는 것을 보여주지만, 같은 봇을 쉽게 팀 안에서 설치 하실 수도 있습니다.
이 포스트에서는 봇을 만드는 과정에 더 집중 하기 위해서, 팀즈 안에서 팀을 어떻게 만드는지 상세한 설명은 이 글 자체에서는 하지 않고 자세한 설명을 담고 있는 다른 포스트 링크를 쉐어도록 하겠습니다.
팀즈에서 팀 만드는 방법 : Create a team from scratch
Bot Framework V4 SDK 탬플릿 (template)은 봇 만드는 과정을 아주 쉽게 만들어주는데요, Visual Studio extension으로 설치하실 수 있습니다. 이 Extension은 여러분이 봇을 쉽게 개발 할 수 있도록 작동하는 봇을 만들기 위해 필요로하는 기본적인 파일들과 설치 환경을 제공해줍니다.
Template extension은 여기서 다운받으실 수 있씁니다.
Echo Bot (Bot Framework v4- .Net Core 3.1)
탬플랫으로 프로젝트 만들기.Extension 다운로드가 끝나고 나면, 다음과 같이 프로젝트를 만들어줍니다.
Visual Studio 열기 ->
Create a new project
클릭하기 ->Echo Bot (Bot Framework v4- .Net Core 3.1)
찾고 설치하기.
appsettings.json
파일 열기.프로젝트를 만들고 나면, 다음과 같은 파일 구조를 보실 수 있습니다.
여기서 appsettings.json
파일이 하이라이트 된 이유는, 이 파일의MicrosoftAppId
와 MicrosoftAppPassword
를 곧 업데이트해야 되기 때문입니다.
한가지 좋은 소식을 미리 스포일러하자면 이 포스트에서는 필요한 유일한 코딩은 바로 이 두 가지 필드를 업데이트하는 것 뿐이라는 것입니다 :)
ngrok http -host-header=rewrite 3978
명령 돌리기.위 명령을 command prompt에서 돌리시게 될 경우, 다음과 같이 ngrok이 public url이 command prompt에 나타나짐을 보실 수 있습니다.
이 public url은 조금있다가 사용될 예정이니, 이 프람트를 닫지 마시고 열어주세요.
Note: 우리가 여기서 포트 3978을 사용하는 이유는 이 포트가 탬플릿과 함께오는 기본 값이기 때문입니다. 이 포트 값은 Properties
폴더 안에 있는 launchSettings.json
파일에서 정해져있는데요, 만약 이 포트 값을 바꾸시고 싶으시다면, 바꾸셔도 됩니다.
App Studio
라는 앱을 팀즈 클라이언트에 설치하기Ngrok을 돌리시고 나신 후, 다시 팀즈 클라인어트로 돌아와서 App Studio
라는 앱을 설치해주세요.
이 앱은 마이크로소프트 팀즈 앱을 만들거나 본인이 가지고 있는 다른 서비스를 팀즈에 인터그레이트 (integrate) 시킬 때 굉장히 유용한 앱입니다.
그래서 저는 개인적으로 이 앱은 여러분의 팀즈 클라이언트에 핀(pin)을 해도 좋을 것 같습니다. (App Studio에 대한 더 많은 정보는 여기 서 확인하실 수 있습니다.)
Manifest
탭 클릭 -> Create a new app
클릭App Details
폼(form) 채우기.Create a new app
을 클릭하고 나면, App Details
라는 페이지가 보이실텐데요, 이 페이지는 여러분이 팀즈에 설치하고자 하는 앱에 대한 정보를 적는 곳입니다. 여기서 필요로하는 대부분의 칸은 채워주세요.
Notes:
App ID
는 appsettings.json
에 필요로하는 값이 아닙니다. 따라서 이 앱 아이디 값은 복사할 필요가 없어요. App Detils
페이지가 제대로 작성되지 않으면, Test Distribute
섹션에 에러 메세지가 뜨게 됩니다.Bots
클릭하고 Set Up
클릭하기.Set up
클랙했을 때 나오는 팝업 폼 작성하기.테스트 목적으로, 봇이 1:1 챗, 팀, 그리고 그룹 챗에 설치 될 수 있도록 허락합니다. 그리고 Click Bot
을 클릭하세요.
appsettings.json
에 있는 MicrosoftAppId
의 value로 붙여넣기.Create bot
을 누르자마자, 봇 아이디가 생성되신 것을 보실 수 있을 실 거에요 (첫 번째 스크린샷) 이 아이디가 바로 우리에게 필요한 아이디입니다. 이 아이디를 appsettings.json
파일에 첫 번째 key인 MicrosoftAppId
value 값으로 넣어주세요 (두 번째 스크린 샷)
Generate New Password
클릭해서 앱 패스워드 값 생성하기.
Generate New Password
를 누른 후 생성되는 패스워드의 값은 한번만 보여지니, 값이 보일 때 복사를 해서, appsettings.json
파일에 있는 MicrosoftAppPassword
의 값으로 넣어주세요.
자 이제 여러분의 첫 번째 봇 서비스인, Echobot이 완성이 되었습니다. 이제 F5를 누르거나 Visual Studio에서 보이는 start
를 눌러 서비스를 local 환경에서 돌아갈 수 있도록합니다. 만약 모든 것이 다 제대로 컴파일 되서 작동을 한다면, 여러분의 브라우저에서 localhost::3978 page를 보실 수 있습니다.
Messaging Endpoint
를 <ngrok url>/api/messages
value로 작성하기.Step 6에서 우리는 ngrok을 통해서 localhost::3978을 연결 (tunneling)해주는 public url을 생성하였습니다. 이제 그 값을 복사해서, Bot endpoint address
에 붙여주세요. 붙이고 난 후, 꼭 /api/messages
를 ngrok public url 다음에 적어줍니다. 이유는 이 /api/messages
가 바로 bot service가 request를 들을 수 있는 endpoint이기 때문입니다.
자 이제 우리는 여러분의 봇을 팀즈 플랫폼에 설치할 준비가 다 끝났습니다. 이제 봇을 여러분의 팀즈에 애드(add)해서 봇과 함께 interaction할 수 있도록 해봅시다.
Test and distribute
섹션으로 가서, Description
칸에 아무 메세지도 없는지 확인하기.
Description 칸에 아무것도 보이시지 않으신다면, 팀즈에서 필요로하는 모든 정보가 제대로 작성되었다는 것을 의미합니다. 만약 메세지를 보신다면, 그 메세지가 말하는 부분을 꼭 고쳐주세요.
Install
대신에 Download
를 클릭하기.유료의 팀즈의 경우거나, Microsoft Developer Program Subscription을 사용하셔서 testing tenant을 만든 경우에는 Install
을 클릭하셔서 봇을 원하는 공간(ex: 1:1 챗, 그룹 챗, 팀)에 추가하시면 됩니다. 그러나 팀즈 무료버전의 경우에는, 이렇게 바로 추가할 수 있는 권한이 사용자들에게 없습니다 ㅠ. 만약 Install
을 클릭하신다면, 다음과 같은 에러가 나타납니다.
팀즈 무료버전의 어드민 권한 또한 굉장히 제한적이라서, 어드민이 사용자들이 custom apps을 설치 할 수 있도록 허락이 안됩니다. 그럼 팀즈 무료에서 일반 사용자의 경우, 어떻게 자신이 만든 앱을 설치해서 테스트 해볼 수 있을까요?
이 경우에는 앱의 Microsoft Teams manifest를 다운 받아서, 팀즈의 App Store를 통해서 이 Manifest를 업로드하시면 됩니다. 우리도 이 방법을 통해서 봇과 함께 챗방을 만들 예정입니다.
Test and Distribute
에서 Download
를 클릭하시면, 하나의 zip file이 여러분의 Downloads폴더에 다운로드 되신 것을 보실 수 있습니다.
Apps
페이지를 클릭한 후, Upload a custom app
클릭해서 manifest 업로드하기.Upload a custom app
을 클릭하면 Explorer Dialog가 팝업 되는데, 여기서 Step 17에서 다운받으신 zip file을 올리시면 됩니다. 업로드가 끝나고 나면, App 페이지에서 여러분의 앱을 다음과 같이 보실 수 있습니다.
Add
클릭하기.테스트 봇을 클릭하시면, 다음과 같이 팝업 dialog가 뜹니다. 여기서 Add
를 클릭하시면, 봇과 함께 1:1인 챗이 만들어집니다.
오늘 이 포스팅 목적으로는 이렇게 퍼스널 챗 (1:bot)이 충분하지만, 만약 다른 공간에 봇을 추가하고 싶으시다면 top-down 화살표를 눌러주시면 다양한 scope에 봇을 설치하실 수 있습니다. (ex: team, a group chat).
Add
를 클릭하시면, 봇이 여러분과 1:1 챗을 만들건데요, 이건 바로 봇이 proactive welcome message를 보내도록 코드가 짜여져있기 때문입니다. 이 코드가 궁금하신 분은 Visual Studio로 돌아가셔서 Echobot.cs
파일을 가보시면, OnMembersAddedAsync
function을 확인해주세요.
축하합니다! 이제 마이크로소프트 팀즈에서 우리가 탬플릿으로 구현한 에코 봇을 사용할 수 있게 되었습니다. 이 봇은 여러분이 보내는 메세지를 다시 똑같이 되풀이 하도록 짜여져있습니다.
봇에게 다른 명령을 주거나, 또는 다른 로직을 구현하고 싶으시다면, Echobot.cs
에서 OnMessageActivityAsync
함수를 변형시키시면서 구현을 하실 수가 있습니다. (관련된 예제/API resource에 관한 링크는 밑에 있습니다).
이 포스트에서는 어떻게 아주 간단한 봇 서비스를 local 환경에서 구현한 후, 팀즈 플랫폼에 설치 할 수 있는지에 대해서 공유해보았습니다. 이 포스트가 더 재미있고, 더 많은 로직을 핸들링 할 수 있는 팀즈 봇을 구현하고픈 그 누군가에게 좋은 시작점이 될 수 있으면 좋겠습니다.
팀즈는 개발자분이 더 유용한 어플리케이션을 자체 환경에서 개발 할 수 있도록 많은 API들을 제공하고 있습니다. 팀즈와 관련된 API가 궁금하시다면 다음 두 곳에서 더 많은 정보를 보실 수 있습니다.
팀즈 봇을 개발하기 위해 필요한 API들에 대해서 더 궁금하시다면, 여기를 확인해주세요. (제가 개발에 참여한 몇 개의 API도 있답니다 :))
P.S: 많은 유저들에게 임팩드를 주는 프로덕트를 만드는 과정에 참여하고시픈 분이나, 아주 재미있고 멋진 분들과 함께 일하는 것을 사랑하시는 분이라면, Microsoft Teams Platform이 함께 할 많은 분들을 찾고 있습니다!
관심있으신 분은 Careers at Microsoft 관련된 포지션들을 찾아서 지원해주세요 :D