앞서 예를 든 상황처럼 게시글이 등록했을 때 teams로 알림을 받고 싶은 내용 중에 '제목, 글쓴이, 내용, 날짜'등이 있을 수 있습니다.

 이런 내용들을 파라미터로 url에 실어서 호출해주면 그 내용도 teams로 받을 수 있습니다.

http://localhost/send_message.php?param0=0번&param1=1번&param2=2번&param3=3번

 위와 같이 (pram0 ~ param3, 4개의 파라미터)url을 호출하여 실제로 teams에 메시지가 어떻게 전송되는지 확인해보겠습니다. 


 1. 코드 작성

 php 서버에 'send_message.php'라는 파일을 생성하여 아래처럼 코드를 작성해줍니다.

param0 부터 param10까지 11개로 요청받은 파라미터를 처리하는 예제입니다.

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

if(extension_loaded("curl")){
	echo "cUrl extension is loaded";
}else{
 echo "cUrl extension is not available";
}

function WebhookSendMessage($text){
    $url = '생성한 WEBHOOK 주소';
    $ch = curl_init();
    
    $test =[
        "@type" => "MessageCard",
        "@context" => "http://schema.org/extensions",
        "summary" => $text["param5"]." ".$text["param4"]." ".$text["param3"]." ".$text["param2"],
        "themeColor" => "0076D7",
        "title" => "메시지 제목",
        "sections" => [
            [
                "activityTitle" => "",
                "activitySubtitle" => "",
                "activityImage" => "",
                "facts" => [
                    [
                        "name" => "Parameter 0",
                        "value" => $text["param0"]
                    ],
                    [
                        "name" => "Parameter 1",
                        "value" => $text["param1"]
                    ],
                    [
                        "name" => "Parameter 2",
                        "value" => $text["param2"]
                    ],                    
                    [
                        "name" => "Parameter 3",
                        "value" => $text["param3"]
                    ]    
                ],
                "text" => "테스트 메시지 입니다."
            ]
        ]
    ];

    $jsonDataEncoded = json_encode($test, true);  
    
    $header = array();
    $header[] = 'Content-type: application/json';

    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

    echo "<br><br> 전송결과 <Br>";
    $result = curl_exec($ch);
    curl_close($ch);
    echo "결과값 ";
    var_dump($result);
}

$messageArray = array(
    "param0" => trim($_GET['param0']),
    "param1" => trim($_GET['param1']),
    "param2" => trim($_GET['param2']),
    "param3" => trim($_GET['param3']),
    "param4" => trim($_GET['param4']),
    "param5" => trim($_GET['param5']), 
    "param6" => trim($_GET['param6']),
    "param7" => trim($_GET['param7']),
    "param8" => trim($_GET['param8']), 
    "param9" => trim($_GET['param9']), 
    "param10" => trim($_GET['param10']), 
);

echo "입력받은 파라미터 출력 <Br>";
print_r($messageArray);

WebhookSendMessage($messageArray);
?>

2. Get 방식으로 url에 파라미터를 전달하여 메시지가 전달되는지 확인해봅니다.

http://localhost/send_message.php?param0=0번&param1=1번&param2=2번&param3=3번

3. URL 호출 결과확인

 여기서 warning 경고는 무시하셔도 됩니다.

 위에 코드에서처럼 모든 에러를 출력하게 작성하였기 때문에 선언이 안 된 param4~ param10까지의 파라미터에 값이 없어서 발생한 경고입니다.

결과확인

 결과 화면을 살펴보시면 아래 부분에 http/2 200 부분에 정상적으로 호출된 것을 확인할 수 있습니다.


4. Teams 메시지 확인

 그럼 실제로 teams에 메시지가 잘 도착했을까요

팀즈에도 잘 도착한 것을 확인할 수 있습니다.


 php curl, json 처리 등의 방식을 활용하여 teams webhook을 활용하여 notification을 간단하게 구현해봤습니다.

 

 MS Teams 메신저의 Notification 기능을 간단하게 구현해봤습니다.

 예를 들어 웹 사이트에 게시글이 등록(수정) 될 때 마다 알림을 받고 싶은 경우를 들어 설명하겠습니다.

대략적인 시스템 구성은 아래와 같습니다.

API 순서

 먼저 teams에 알림을 받기 위해선 webhook을 생성해 줘야하며 순서는 아래를 참고해주세요

*참고 : Webhook(웹훅)이란?
https://simsimjae.medium.com/%EC%9B%B9%ED%9B%85%EC%9D%B4%EB%9E%80-e41cf1ba92f0
(참고 : https://g.co/kgs/Zv5x7p)

1. 팀즈 '팀 만들기'

팀 - 팀 만들기


2. 팀 - 채널 만들기

채널 만들기


3. 채널 - 커넥터 생성

 


4. 커넥터 - Incoming Webhook 구성하기


5. webhook 생성


5. Webhook 복사

 아래 생성된 Webhook URL을 복사해둡니다.

만약 URL을 다시 확인하려면?

왼쪽에 '구성됨' 메뉴를 선택후 구성한 Webhook을 클릭 후 '관리'를 누르시면 확인할 수 있습니다.


 

 

 

 

+ Recent posts