Microsoft Teams 상태를 자동으로 설정할 수 있다면 하루 업무 리듬을 조절하는 데 큰 도움이 됩니다. 특히 재택근무 중에는 PC에 계속 묶여 있는 느낌 없이 일할 수 있어서 더욱 그렇습니다. 물론 Teams 앱을 직접 열어 수동으로 상태를 변경할 수도 있지만, 굳이 앱을 열 필요 없이 상태를 바꿀 수 있다면 훨씬 편리하지 않을까요?
Microsoft 365를 위해 설계된 Power Automate는 작업과 워크플로를 자동화하여 시간을 절약해 줍니다. 처음 워크플로(또는 '흐름')를 만들어 본 적이 없어도 걱정하지 않아도 됩니다. 인기 있는 앱 템플릿이 다양하게 제공되기 때문입니다.
Teams 상태 설정하기
이 가이드는 Microsoft MVP인 Damien Bird가 Power Automate를 통해 Teams 상태를 업데이트하는 방법을 소개한 글을 바탕으로 작성되었습니다. Damien Bird가 가이드 서두에 남긴 경고 역시 그대로 전해 드립니다.
이 방법은 공식적으로 문서화되지 않은 비공식(unofficial) 방식이므로 실제 운영 환경의 흐름에는 사용해서는 안 됩니다. 동작은 하지만 항상 작동한다고 보장할 수 없으며, 하루에 실행할 수 있는 흐름 횟수에도 제한이 있습니다. 따라서 기대치를 적절히 조절하는 것이 중요합니다.
Damien Bird의 게시물에 포함된 링크는 다음과 같습니다.
Power Automate에서 Microsoft Teams 상태를 설정하는 절차는 아래와 같습니다.
1. Power Automate에서 왼쪽 탐색 창의 내 흐름(My flows)을 클릭합니다.
2. 새 흐름(New flow)을 클릭합니다.
3. 이 단계에서는 자동화된 클라우드 흐름(Automated cloud flow), 즉시 클라우드 흐름(Instant cloud flow), 예약된 클라우드 흐름(Scheduled cloud flow) 세 가지 옵션 중 선택할 수 있습니다. 이 예제에서는 즉시 클라우드 흐름을 사용하겠습니다.
4. 흐름 이름(Flow name)을 입력하고 흐름 트리거 방식 선택 항목에서 옵션을 고릅니다. 이 예제에서는 수동으로 흐름 트리거(Manually trigger a flow)를 선택합니다. 완료되면 만들기(Create)를 클릭해 확인합니다.
5. 만들기를 클릭하면 새 흐름이 생성되고, 수동 트리거로 시작됩니다. 다음 작업을 지정해야 하므로 다음 단계(Next step)를 클릭합니다.
6. 검색창에 "SharePoint"를 입력한 뒤 스크롤하여 SharePoint에 HTTP 요청 보내기(Send an HTTP request to SharePoint)를 클릭합니다. 
Microsoft Teams 상태 변경하기
1. 다음 화면에서 SharePoint HTTP 요청 항목을 완성해야 합니다. SharePoint 요청은 아래 이미지와 정확히 같은 형태여야 합니다.
흐름 본문(body)에서 "availability" 값을 "Available", "Busy", "BeRightBack", "DoNotDisturb" 또는 "Away"로 변경할 수 있습니다. 참고로 오프라인/자리 비움(OffWork) 옵션은 테스트 결과 정상 작동하지 않아 이 가이드에는 포함하지 않았습니다.
2. 완료 후 저장(Save)을 클릭합니다.
3. 이제 흐름이 준비되었으므로 테스트를 진행해야 합니다. 테스트는 단순히 권장 사항일 뿐만 아니라 첫 흐름 설정 시에는 필수 단계입니다. 테스트(Test)를 클릭합니다.
4. 다음 화면에서 흐름 테스트 방식을 지정합니다. 수동(Manually)(직접 트리거) 또는 자동(Automatically)(다른 흐름의 이전 실행 기반) 중에서 선택할 수 있습니다. 처음 흐름을 설정할 때는 수동만 선택 가능하므로 이를 고른 뒤 테스트를 클릭해 확인합니다.
5. 권한 수준에 따라 Power Automate가 흐름 실행 권한 확인을 위해 Microsoft 계정 로그인을 요구할 수 있습니다. 아래 예시에서는 필요한 권한이 이미 부여되어 초록색 체크 표시가 나타난 것을 확인할 수 있습니다. 계속(Continue)을 클릭합니다.
6. 마지막으로 흐름 실행(Run flow)을 클릭해 흐름을 실행합니다.
실행 버튼을 누르면 초록색 체크 표시와 함께 흐름이 성공적으로 시작되었음을 알 수 있으며, 흐름 실행 페이지에서 상세 상태를 확인할 수 있는 링크도 함께 제공됩니다. 실제로 Microsoft Teams 상태가 변경되었는지 직접 확인해 보는 것도 잊지 마세요.
상태 메시지 설정하기
상태 메시지를 설정하려면 위에서 만든 것과 거의 동일한 Power Automate 흐름을 하나 더 생성하면 됩니다. 몇 가지 요소만 수정하면 됩니다. 완성된 흐름의 모습은 아래와 같습니다.
사용자 지정 Microsoft Teams 상태 커넥터 만들기
이 가이드를 위한 자료를 찾던 중, 다른 Microsoft MVP인 Loryan Strant가 만든 흥미로운 Spotify 프로젝트를 발견했습니다. That API Guy가 작성한 상세한 가이드를 기반으로 한 Spotify 사용자 지정 커넥터를 활용해, Spotify에서 듣고 있는 곡과 아티스트 정보를 Microsoft Teams 상태에 표시하는 프로젝트입니다.
그의 가이드를 따라 해보던 중, 또 다른 Microsoft MVP인 Luise Freese가 더 효율적인 솔루션을 제공했다는 사실도 알게 되었습니다. 그래서 최종 결과물은 두 사람의 작업을 결합하고 시행착오를 거쳐 완성된 것입니다. 두 가이드 모두 동적 값(dynamic values)과 식(expressions)에 대한 핵심 설명이 빠져 있었지만, 어차피 Power Automate 입문자를 대상으로 한 문서는 아니었습니다. 두 가이드를 모두 따라 한 뒤, Freese의 솔루션에 더 가까운 형태의 Spotify-Microsoft Teams 사용자 지정 커넥터를 완성했습니다. 더 나은 방법을 알고 계시다면 얼마든지 공유해 주세요.
더 간편한 방법을 원한다면 아래 코드를 그대로 복사해 다음 용도로 활용할 수 있습니다.
1. Microsoft Teams 상태를 자리 비움(Away)으로 설정{"id":"6e453f83-f22d-4715-bdb6-5cbe7b44b6fa","brandColor":"#036C70","connectionReferences":{"shared_sharepointonline":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline/connections/5d9bafd92370456789caa39b6c3f2277"}}},"connectorDisplayName":"SharePoint","icon":"https://connectoricons-prod.azureedge.net/releases/v1.0.1554/1.0.1554.2707/sharepointonline/icon.png","isTrigger":false,"operationName":"Set_Microsoft_Teams_status_to_Away","operationDefinition":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_sharepointonline","operationId":"HttpRequest","apiId":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline"},"parameters":{"dataset":"https://presence.teams.microsoft.com","parameters/method":"PUT","parameters/uri":"/v1/me/forceavailability","parameters/headers":{"content-type":"application/json"},"parameters/body":"{\n\n\"availability\": “Offline”, \n\"activity\": “OffWork”\n\n}"},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{},"metadata":{"operationMetadataId":"e3433a3c-7e7c-40d5-b804-696b2b1d0398"}}}
2. 상태 메시지 업데이트{"id":"638a81c6-7d9b-481a-8875-97a08dcf18b7","brandColor":"#036C70","connectionReferences":{"shared_sharepointonline":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline/connections/5d9bafd92370456789caa39b6c3f2277"}}},"connectorDisplayName":"SharePoint","icon":"https://connectoricons-prod.azureedge.net/releases/v1.0.1554/1.0.1554.2707/sharepointonline/icon.png","isTrigger":false,"operationName":"Set_Microsoft_Teams_status_message_note_","operationDefinition":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_sharepointonline","operationId":"HttpRequest","apiId":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline"},"parameters":{"dataset":"https://presence.teams.microsoft.com","parameters/method":"PUT","parameters/uri":"/v1/me/publishnote","parameters/headers":{"content-type":"application/json"},"parameters/body":"{\n\n\"message\": \"I am away from my desk. I went to grab lunch\"\n\n}\n "},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{},"metadata":{"operationMetadataId":"05f65dba-6bef-458a-81ac-b4fc08c290db"}}}
새 단계 > 내 클립보드(My clipboard)로 이동하면 위 코드를 Power Automate에 바로 붙여넣을 수 있습니다. Power Automate 계정을 설정할 때 클립보드에 코드를 미리 붙여 넣어 두면 편리합니다.
이 흐름 설정 과정에서 궁금한 점이나 도움이 필요하시거나, 개선 아이디어가 있다면 Twitter를 통해 의견을 나눠 주세요.