공통

[Teams] Python에서 Power Automate Workflow을 이용한 유저 멘션

데이터엔지니어 주형권 2024. 8. 24. 15:11
반응형

Teams adaptivecard 전송

 

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

지난번에 Teams 메시지 전송에 이어서 이번에는 조금 더 다체로운(?) 형태로 메시지를 보낼 수 있는 방법을 찾던 와중에 Teams 채널에서 특정 유저를 멘션하는 부분에 대해서 글을 작성 하였습니다.

 

기존의 Power Automate Workflow 세팅 및 앞 부분의 사항은 다음의 글을 참고 부탁 드립니다.

 

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

안녕하세요. 주형권입니다. 최근에 Python을 통해서 특정 상황에서 Teams 채널에 메시지를 전송 할때 다음과 같이 알림이 발생하여 다른 방법으로 보내는 방법을 찾는 과정을 정리하였습니다. 이

burning-dba.tistory.com

 

앞의 부분은 생략하고 Power Automate Workflow에서 다음과 같이 채우고 저장을 합니다.

adaptivecard 세팅

 

 

Python 코드는 다음과 같습니다. 함수로 만들어서 사용하였는데, 필요에 따라서 변경해서 사용하시면 좋을거 같습니다.

import pymsteams

def teamsmessage_send(email:str)-> None:
    myTeamsMessage = pymsteams.connectorcard(r"your webhook url")
    myTeamsMessage.payload = {
        "type": "message",
        "attachments": [
            {
            "contentType": "application/vnd.microsoft.card.adaptive",
            "content": {
                "type": "AdaptiveCard",
                "width": "Full",
                "body": [
                    {
                        "type": "TextBlock",
                        "text": "<at>Joo</at>",
                        "wrap": "true"
                    },
                    {
                        "type": "TextBlock",
                        "text": f"주형권 호출",
                        "wrap": "true"
                    }
                ],
                "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
                "version": "1.2",
                "msteams": { "width": "full",
                    "entities": [
                        {
                            "type": "mention",
                            "text": "<at>Joo</at>",
                            "mentioned": {
                            "id": f"{email}",
                            "name": f"{email}"
                            }
                        }
                    ]
                }
            }
        }]
    }
    myTeamsMessage.send()
try:
    teamsmessage_send('your email address')
except:
    pass

 

호출하면 다음과 같이 볼 수 있습니다.

호출 결과

 

그리고 Python 코드에서 예외처리를 걸어줬는데요.

try:
    teamsmessage_send('your email address')
except:
    pass

 

정상적으로 잘 동작하는데 이런 에러가 발생합니다.

    raise TeamsWebhookException(r.text)
pymsteams.TeamsWebhookException

 

왜 그런지는 찾아봤는데, 모르겠네요... text를 r''로 묶어서 보내거나 했지만 역시 안되고 특수문자나 탈출문자열이 없는데 다음과 같이 계속 발생합니다. 저 같은 경우 pymsteams 라이브러리를 그냥 pass로 고쳐서 쓰거나 위와 같이 예외처리로 그냥 pass 했는데, 저 에러 이외에 에러가 발생 할 경우 문제가 있을 수 있으니 꼭 예외처리를 바꿔서 사용해주세요. (이 부분은 어디까지나 테스트로 하였기에 단순히 pass로 처리 하였습니다.)

 

추가적으로 adaptivecard를 더욱 꾸며서 사용 하실분은 아래의 링크를 참고해서 사용하시면 많은 도움이 될 것 같습니다.

추후에 바로가기 링크생성등의 글도 작성 예정이니 많은 관심 부탁 드립니다.

 

시작하기 - Adaptive Cards

시작 아티클 08/29/2023 기여자 5명 피드백 이 문서의 내용 --> 적응형 카드는 JSON 직렬화된 카드 개체 모델입니다. 적응형 카드 구조 카드의 기본 구조는 다음과 같습니다. AdaptiveCard - 루트 개체는

learn.microsoft.com

 

감사합니다.

반응형