olrlobt

[MatterMost] Webhooks와 Bot으로 메세지 보내기 본문

else/MatterMost

[MatterMost] Webhooks와 Bot으로 메세지 보내기

olrlobt 2023. 8. 16. 23:16

https://olrlobt.tistory.com/63

 

[MatterMost] 매터모스트 개인 테스트 서버(Preview server) 열기

매터모스트 MatterMost 매터모스트(Mattermost)는 오픈 소스 메시징 플랫폼으로, 팀들이 소통할 수 있는 자체 호스팅 방식의 채팅 서비스이다. Slack이나 Microsoft Teams과 같은 서비스와 비슷하게 작동하

olrlobt.tistory.com

 

지난번, 매터모스트를 이용하여 Webhook과 Bot을 테스트하기 위하여 개인 Preview Server를 생성하였다.

오늘은 여기서 Webhook과 Bot으로 메시지 보내기를 진행해 보려고 한다.

 

추후에는, 이미 만들어서 사용 중인 Webhooks를 어떻게 스터디에서 활용 중인지까지 포스팅하겠다.

 


Webhook으로 메시지 보내기

Webhook은 웹 애플리케이션에서 일정 이벤트가 발생하였을 때, 정의된 URL로 HTTP POST 요청을 자동으로 보내는 방식을 말한다. 이를 통해 다른 시스템이나 서비스에 알림을 전송할 수 있다.

 

나는 이 Webhook과 Bot을 테스트해 보고, 알맞은 기능을 사용할 것이다.

 

1. 컨테이너 실행

 

먼저 도커에서 다운로드하여 놓았던 컨테이너를 실행한다.

반드시 실행이 된 상태여야 개인 Preview 서버에 접속이 가능하다.

 

 

개인 Preivew Server 홈 화면

 

 

2. Webhook 생성

상단 Channels > Integrations에 들어간다.

 

 

 

여기서 Webhook의 경우 Incoming Webhooks를 통해 http 요청을 받을 링크 생성을,  

Bot의 경우 Bot Accounts를 통해 봇을 생성해 주어야 한다.

 

Bot은 아래에서 보도록 하고,

Incoming Webhooks를 누른다.

 

 

우측 상단의 Add Incoming Webhook을 누른다.

 

 

 

Webhooks 사용 목적에 맞게 작성을 해 준 후, Save로 저장하자.

Channel은 사용 Webhook을 사용할 채널을 선택하면 된다.


마지막 Lock to this channel을 체크하면, 생성한 Webhook에 발생된 http 요청으로 해당 채널 접근만 가능하게 막을 수 있다. 웬만하면 꼭 체크해 주자.

 

 

이렇게 생성해 주면, 아래와 같이 작성한 정보에 따라, Webhooks가 정상적으로 생성되었다.

 

 

 

이제 이 Webhooks URL에 Http 요청을 보내보자.

 

 


Webhooks Http 요청

 

https://developers.mattermost.com/integrate/webhooks/incoming/

 

Incoming webhooks

Edit on GitHub Incoming webhooks Create an incoming webhook  Let’s learn how to create a simple incoming webhook that posts the following message to Mattermost. In Mattermost, go to Product menu > Integrations > Incoming Webhook. If you don’t have the

developers.mattermost.com

 

 

매터모스트 공식 홈페이지에서 Webhooks에 관한 문서를 찾아보면 아래와 같이 사용하라고 적혀있고,

파라미터 형식도 자세하게 나와 있으니, 사용 목적에 맞게 참고하여 사용하자.

 

 

일단은 메시지 전송에 필요한 파라미터는, text만 있으면 된다.

또한 Http 헤더는 Json 형식을 요청한다.

 

 

먼저 Webhooks가 정상적으로 생성됐는지 확인하기 위해 cmd에서 http 요청을 해보자,

 

 

1. cmd curl 설치 확인

curl --version

 

위 명령어를 이용하여 Windows 환경에 curl이 설치되어 있는지 확인한다.

 

 

2. 공식 홈페이지의 curl 코드를 복사해서 실행

curl -i -X POST -H "Content-Type: application/json" -d "{\"text\": \"Hello, this is some text\\nThis is more text. \"}" http://localhost:8065/hooks/

 

당연히 URL은 본인 Webhooks URL로 변경해 주어야 한다.

또한 cmd에서의 작은따옴표 대신 큰 따옴표를 사용하여야 하며, 문자열 내부의 " 큰 따옴표의 경우는 escape 해 주어야 한다.

 

마찬가지로 \n과 같은 문자도 escape 해주고 전송해 보자.

 

 

위처럼 200 OK라는 값이 나왔다면 정상적으로 작동한 것이다.

 

 

3. 정상작동 확인

내가 생성한 계정의 이름으로, 이름 옆에 BOT이라는 라벨과 함께 메시지가 정상적으로 전송된 것을 확인할 수 있다.

 

 

 


Bot으로 메시지 보내기

 

이번엔 내 계정이 아닌 봇으로 메시지를 보내보자.

 

먼저, 봇을 생성하기 위해선 채널에 봇 생성을 허용해 주어야 한다.

 

 

1. Bot 사용 설정

Channels를 누르고, System Console을 누른다.

 

 

 

좌측 탭에서 Bot Accounts를 찾아 상단 Enable을 true로 바꿔준 후, Save로 저장한다.

 

 

 

2. Bot 생성

Channels > Integrations에 들어간다.

아까 선택했던 Webhooks가 아닌, Bot Accounts에 들어간다.

 

 

 

Add Bot Accounts를 눌러, Bot을 추가해 주자.

Webhooks과 진행 방식은 비슷하다.

 

 

아까와 비슷하게 봇의 사용 목적, 이름과 사진이 필요하면 사진도 등록을 해주고,

Create Bot Account를 눌러 봇을 생성한다.

 

이때 가장 하단의 post:channels를 체크해 주어야, channels에 메시지를 보낼 수 있다.

 

 

 

그러면 봇의 토큰 값이 나오게 되는데, 이 값은 한 번밖에 표시되지 않기에 잘 저장해 주어야 한다.

 

여기서 무심코 Done을 누르게 되면, 봇을 다시 생성해 주어야 한다.

 

 

뒤로 나오면, Token의 ID 값만 확인할 수 있고, 기존 Token값과는 완전히 다른 것을 알 수 있다.

 

 

 

3. 채널 ID 보기

 

Bot이 메시지를 보낼 채널을 누르고, View Info를 눌러 정보창을 연다.

 

 

 

 

그러면, 채널 우측으로 채널의 고유 ID를 볼 수 있다.

이 정보는 HTTP 요청에 필요하다.

 

 

4. HTTP 요청

https://developers.mattermost.com/integrate/reference/bot-accounts/

 

Bot accounts

Edit on GitHub Using bot accounts Bot accounts access the Mattermost RESTful API on behalf of a bot through the use of the personal access tokens feature. Bot accounts are just like user accounts, except they: Can’t be logged into. Can’t be used to cre

developers.mattermost.com

 

 

위 공식 사이트에 접속하면, 아래와 같이 RESTful API 사용법과, 간단하게 실행해 볼 수 있는 예제를 얻을 수 있다.

 

 

curl -i -X POST -H "Content-Type: application/json" -d "{\"channel_id\":\"<channel-id>\", \"message\":\"This is a message from a bot\", \"props\":{\"attachments\": [{\"pretext\": \"Look some text\",\"text\": \"This is text\"}]}}" -H "Authorization: Bearer < YOUR Bot Token>" http://localhost:8065/api/v4/posts

 

이 역시 escape를 통해 windows cmd에서 사용할 수 있게 변경해 주고,

cmd를 통해 전송해 보자.

 

당연히 BOT token과, URL, Channel ID는 알맞게 변경해 주어야 한다.

 

 

cmd로 curl 요청을 보내면

 

5. 정상작동 화면

 

설정했던 채널에 정상적으로 메시지가 전송된 것을 확인할 수 있다.

 

 

 

 

 

 

Comments