[분석AI서비스팀 전소희] 이번 글에서는 노코드로 알람 메시지 내용을 구성한 방법에 대해 이야기 해보도록 하겠습니다.
실제 AI 분석 포탈에서 알람 메시지 전송 비즈니스를 구현하기 위해 사용한 방법입니다.
요구사항
- 설정한 알람 시간에 도달할 경우 미리 작성된 템플릿 내용에 맞춰 메시지 전송
- 알람에 대한 메시지 템플릿을 사용자가 등록, 수정 할 수 있음
보내야 할 알람 메시지가 아래와 같다고 예를 들어 봅시다.
이 알람 메시지 내용을 구성하기 위해서는 두 가지 영역이 필요합니다.
- 변하지 않는 부분
- 변하는 부분
메시지 내용을 보시면 10이라는 숫자 부분은 알람이 호출될 때마다 변하는 변수에 해당됩니다.
10이라는 숫자는 알람이 호출될 때마다 사전에 설정된 query를 요청한 후 response 받은 값을 이용하여 메시지를 구성해야 합니다.
알람 메시지 전송 flow는 다음과 같습니다.
- 설정한 알람 시간에 도달
- 알람에 연결된 query 요청
- 응답값에서 알람 메시지에 필요한 데이터 추출
- 알람에 연결된 템플릿과 추출한 데이터를 조합하여 메시지 구성
- 해당 알람 메시지 전송
어느 특정 알람의 request query와 response가 아래와 같을 경우
response의 hists.total.value 부분을 추출하여 기존에 등록된 템플릿과 결합하여 메시지 내용을 완성 시킬 수 있습니다.
request query (elastic search) | response |
{ “size”: 100, “query”: { “bool”: { “must”: [ { “range”: { “articleRegDt”: { “gte”: “now-24h” } } }, { “bool”: { “must”: [ { “term”: { “boardName”: “버그 제보 게시판” } } ] } } ] } } } | { “hits“: { “total“: { “value“: 1, “relation”: “eq” }, “max_score”: 5.4294457, “hits”: [ { “_index”: ”smilegate_game_community”, “_type”: “_doc”, “_id”: “9611641”, “_score”: 5.4294457, “_source”: { “articleId”: 100001, “articleRegDt”: 1689742941630, “userId”: “shjeon”, “title”: ”캐시 아이템 구입 오류”, “content”: "상점에서 방어템 구입 시 오류가 발생합니다. 캐시잔액도 줄어듭니다.” } } ] } } |
그렇다면 hits.total.value 와 같은 변하는 값들은 어떻게 관리될까요?
아래와 같이 쿼리를 선택 후 해당 쿼리에 대한 response value를 등록하여 여러개의 응답 목록을 만들 수 있습니다.
path를 입력 받아 query 요청 후 응답받은 json에서 path를 추적하여 value를 추출할 수 있고, script는 메시지 템플릿을 구성할 때 사용됩니다.
이렇게 만들어진 응답값들은 템플릿을 만들 때 사용할 수 있습니다.
전체 등록 건수 변수는 위에서 입력했던 ${total_count}로 설정하여 해당 값은 backend에서 실제값(예시에서는 10)으로 치환됩니다.
이러한 방법으로 사용자로부터 변하는 영역에 대한 path를 입력받아 원하는 메시지 템플릿을 구성할 수 있고, 계속해서 변경되는 메시지 내용에 대해 대응할 수 있었습니다.
마찬가지로 query를 변경하고 싶을 경우에는 어떻게 해야할까요?
현재 아래와 같이 24시간 이내의 게시물 건만 가져오는 query가 생성되어 있습니다. 여기서 24시간이 아닌 1시간 이내의 건들로 조회하고 싶을 때는 어떻게 해야할까요?
데이터베이스 저장소에서 직접 query 값을 변경해야할까요?
{
“size”: 100,
“query”: {
“bool”: {
“must”: [
{
“range”: {
“articleRegDt”: {
“gte”: “now-24h”
}
}
},
…..
}
앞서 말씀드린 response value들과 같이 query에 대한 input value로 관리하여 사용자가 직접 수정할 수 있습니다.
아래와 같이 path, key를 입력받고, 실제 사용자가 해당 값을 제어할 폼(입력 형태)를 설정합니다.
등록한 query input은 알람 설정 시 앞서 설정했던 입력형태(select)로 값을 선택할 수 있습니다.
conclusion
이러한 방법으로 알람 메시지의 내용과 실제 가져오는 데이터의 범위 등을 사용자가 쉽게 수정할 수 있으며, 기존의 elasticsearch alerting보다 사용자 친화적으로 메시지 수정 기능을 제공할 수 있습니다.
노코드 방법을 사용하여 적용한 부분은 아래와 같습니다.
- 응답값과 정해놓은 템플릿으로 알람 메시지 구성
- request query를 유동적으로 수정할 수 있도록 하는 query inputs
- 알람 설정 시 알람 대상을 원하는 입력형태와 value로 구성하여 입력받을 수 있도록 함
대표이미지 참조) https://appmaster.io/ko/no-code