[Teams] Python에서 Power Automate Workflow을 이용한 Teams 메시지 전송
안녕하세요. 주형권입니다.
최근에 Python을 통해서 특정 상황에서 Teams 채널에 메시지를 전송 할때 다음과 같이 알림이 발생하여 다른 방법으로 보내는 방법을 찾는 과정을 정리하였습니다. 이 방법이 정확한 방법은 아닌거 같으나, 일단 메시지가 없이 잘 보내져서 방법을 공유 합니다. 더욱 좋은 방법이 있으신 분은 댓글을 부탁 드립니다.
우선 Learn More을 눌러서 들어가면 기존에 Webhook은 종료되는거 같습니다.
그래서 새로운 방법을 찾아야 하는데, 그 방법이 Power Automate Workflow로 보입니다.
근데, 읽어봐도 도통 무슨 이야기인지 잘 모르겠고... Python에서 어떻게 콜해야 하는지 전혀 모르겠습니다...
기존에는 다음과 같이 python에서 채널에 메시지를 보낼수 있었습니다.
import pymsteams
myTeamsMessage = pymsteams.connectorcard("webhook url")
myTeamsMessage.text(f"""테스트 입니다.""")
myTeamsMessage.send()
하지만 이 방법으로 보낼 경우 위의 알람이 뜹니다. 그래서 다음과 같이 변경을 해줘야 합니다.
1. Workflow를 만들어야 합니다.
https://make.powerautomate.com/ 에 접속해서 Workflow를 생성해야 합니다.
템플릿으로 시작하기를 누르면 여러가지 템플릿이 나오는데 저는 메시지를 보낼것이기 때문에 Webhook 메시지 전송을 선택 하였습니다. 기존의 방식이랑 똑같지만 Webhook으로 요청하면 Workflow에서 받아서 대신(?) 전송 하는 방식인것 같습니다.
처음에 생성을 하면 다음과 같은 템플릿이 나오는데요. adaptive card를 받아서 채널이나 사람에게 메시지를 보낼수 있습니다. 그런데, 제가 테스트 해봤을때 그 adaptive card가 무조건 Json 형식으로 이루어져 있어야하고, 이 Json을 그대로 보내줍니다. 예를 들어서 "body" : "내용" 이런식으로 보낼 경우 내용에 있는 부분만 보내주면 좋을텐데 key값까지 전부 보내주기 때문에 사용하기가 여간 까다로웠습니다.
그래서 저같은 경우 아래의 부분을 삭제하고 단순히 메시지를 보내는 방법으로 하였습니다. (삭제는 우클릭후 삭제 버튼을 누르면 삭제되고 새롭게 추가하는 부분은 + 기호를 누르면 추가 됩니다.)
위의 내용을 모두 기입하고 Workflow를 생성하고 다음과 같이 Python 으로 보내면 Message 부분에 입력한 내용이 그대로 날아옵니다. Webhook의 URL은 다음의 동작에서 확인 가능 합니다.
메시지 전송 결과값