GCP/운영관련 개발

[Teams] Python에서 Power Automate Workflow을 이용한 Teams 메시지 전송

데이터엔지니어 주형권 2024. 7. 11. 11:51
반응형

 

Python으로 Teams 메시지 보내기

 

안녕하세요. 주형권입니다.

Teams 메시지

 

최근에 Python을 통해서 특정 상황에서 Teams 채널에 메시지를 전송 할때 다음과 같이 알림이 발생하여 다른 방법으로 보내는 방법을 찾는 과정을 정리하였습니다. 이 방법이 정확한 방법은 아닌거 같으나, 일단 메시지가 없이 잘 보내져서 방법을 공유 합니다. 더욱 좋은 방법이 있으신 분은 댓글을 부탁 드립니다.

 

우선 Learn More을 눌러서 들어가면 기존에 Webhook은 종료되는거 같습니다. 

Teams 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를 생성해야 합니다.

Workflow 만들기

 

템플릿으로 시작하기를 누르면 여러가지 템플릿이 나오는데 저는 메시지를 보낼것이기 때문에 Webhook 메시지 전송을 선택 하였습니다. 기존의 방식이랑 똑같지만 Webhook으로 요청하면 Workflow에서 받아서 대신(?) 전송 하는 방식인것 같습니다.

 

webhook 전송

 

처음에 생성을 하면 다음과 같은 템플릿이 나오는데요. adaptive card를 받아서 채널이나 사람에게 메시지를 보낼수 있습니다. 그런데, 제가 테스트 해봤을때 그 adaptive card가 무조건 Json 형식으로 이루어져 있어야하고, 이 Json을 그대로 보내줍니다. 예를 들어서 "body" : "내용" 이런식으로 보낼 경우 내용에 있는 부분만 보내주면 좋을텐데 key값까지 전부 보내주기 때문에 사용하기가 여간 까다로웠습니다.

adaptive card 보내기

 

그래서 저같은 경우 아래의 부분을 삭제하고 단순히 메시지를 보내는 방법으로 하였습니다. (삭제는 우클릭후 삭제 버튼을 누르면 삭제되고 새롭게 추가하는 부분은 + 기호를 누르면 추가 됩니다.)

 

단순히 메시지만 보내는 동작

 

채널,팀,메시지 내용 기입

 

위의 내용을 모두 기입하고 Workflow를 생성하고 다음과 같이 Python 으로 보내면 Message 부분에 입력한 내용이 그대로 날아옵니다. Webhook의 URL은 다음의 동작에서 확인 가능 합니다.

 

webhook URL

 

 

메시지 전송 결과값

메시지 전송 결과

 

 

반응형