윈도우 원격 데스크톱 연결 여부를 Teams Workflows의 Webhook을 사용해서 채널로 전송(w. Teams 업데이트)

따용·2024년 3월 29일
1

Microsoft Teams

목록 보기
1/2

윈도우 원격 데스크톱 연결 여부를 Teams 채널로 전송

작년 이맘때 쯤 셋팅한 Incoming Webhook을 잘 사용하던 중,
기존 셋팅해둔 서버가 고장나서 다시 셋팅하려는데 커넥터가 없어졌다!!!

그래서 다시 시작된 삽질을 기록하려고 함😮‍💨
Workflows를 사용해서 다시 셋팅하기 시작

1. WorkFlow 생성


채널의 더보기 버튼을 클릭하면 나오는 메뉴들 중 워크플로를 선택한다.

나오는 워크플로 창에서 우리가 생성해야할 워크플로가 보이지 않으므로 추가 워크플로를 눌러서 워크플로 만들기 페이지로 이동한다. (워크플로로 바로 들어가서 만들기 페이지로 이동해도 됨)

수많은 템플릿들 중 알림이라는 템플릿으로 이동한다.

템플릿 더 보기를 눌러서 Post to a channel when a webhook request is received를 찾아서 클릭한다.

웹훅 이름을 입력 후 다음을 누른다.

메세지를 띄울 팀과 채널을 선택 후 흐름 만들기를 누른다.

만들기 완료 후 나오는 url을 복사한다.

2. 스크립트 작성

지금 날짜를 받아와서 json파일을 작성 후 작성한 json파일을 curl로 전송하는 bat파일을 생성한다.

@echo on

for /f %%x in ('powershell -command "Get-Date -format yyyy-MM-ddTHH:mm:ss"') do set "currentDateTime=%%x"
echo "%currentDateTime%"

:: JSON 파일 생성 및 현재 시간 쓰기
(
    echo {
    echo     "type": "messageCard",
    echo     "attachments": [
    echo         {
    echo             "contentType": "application/vnd.microsoft.card.adaptive",
    echo             "contentUrl": null,
    echo             "content": {
    echo                 "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    echo                 "type": "AdaptiveCard",
    echo                 "version": "1.2",
    echo                 "body": [
    echo                     {
    echo                         "type": "TextBlock",
    echo                         "size": "medium",
    echo                         "weight": "bolder",
    echo                         "text": "Connection",
    echo                         "style": "heading",
    echo                         "wrap": true
    echo                     },
    echo                     {
    echo                         "type": "FactSet",
    echo                         "facts": [
    echo                             {
    echo                                 "title": "time",
    echo                                 "value": "%currentDateTime%"
    echo                             },
    echo                             {
    echo                                 "title": "host",
    echo                                 "value": "127.0.0.1"
    echo                             }
    echo                         ]
    echo                     }
    echo                 ]
    echo             }
    echo         }
    echo     ]
    echo }
) > temp.json

curl -H "Content-Type: application/json" -d @temp.json "enter_url_url"

del temp.json

🚨 json 파일로 만들어서 보내지 않는 경우 오류날 수 있음

🚨 json 파일도 잘 만들어지고 터미널에서 실행시 잘 되는데 batch파일 실행 시 아래와 같은 권한 에러가 나는 경우
{"error":{"code":"AuthorizationFailed","message":"You do not have permissions to perform action 'run' on scope '/triggers/manual/paths/'. Verify you are making the request with the appropriate HTTP method. See http://aka.ms/logic-trigger for details."}}

메세지 형식 참고 페이지

💚 해결 방법
주소에 sp=%2Ftriggers%2Fmanual%2Frun 이렇게 적힌 부분을 sp=/triggers/manual/run 이렇게 바꾸면 된다!
참고: permissions to perform action 'run' on scope '/triggers/manual/paths/

3. 작업 스케줄러 추가

이전 포스팅을 참고해주세요:)

Teams 업데이트 되고 제대로 된 설명서 찾기도 힘들어서 하루종일 고생했는데 그래도 해결해서 뿌듯합니다. 휴😹

👀 MAC에서 전송하기

curl -X POST -H "Content-Type: application/json" -d '{
  "type": "messageCard",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "contentUrl": null,
      "content": {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.2",
        "body": [
            {
              "type": "TextBlock",
              "size": "medium",
              "weight": "bolder",
              "text": "Connection",
              "style": "heading",
              "wrap": true
            },
            {
              "type": "FactSet",
              "facts": [
                {
                  "title": "time",
                  "value": "2024.03.29"
                }, 
                {
                    "title": "host",
                    "value": "127.0.0.1"
                }
              ]
            }
        ]
      }
    }
  ]
}' "enter_your_url"

윈도우 환경에 셋팅한거라서 mac에서는 터미널로 간단한 테스트만 진행해 봄.

profile
🤫

0개의 댓글