brunch

You can make anything
by writing

C.S.Lewis

by Zeno의 Zendesk 이야기 Jun 23. 2024

[Zendesk 고도화] 리퀴드 마크업 활용하기 #9

#9 리퀴드 마크업(Liquid markup)의 중첩 #3

지난 시간에는 DATE  필터를 사용하여 티켓 생성 시각을 여러 가지 방법으로 표시하는 방법에 대해 이야기해 보았습니다.


하지만 해결하지 못한 문제가 하나 남아 있었는데요. 

바로 젠데스크 서버에 포함된 티켓 생성 시각은 표준시를 기준으로 하기 때문에 실제 한국 시각과 차이가 발생한다는 점이었습니다.


이번 시간에는 필터 중첩을 활용하여 이 문제를 해결해 보겠습니다.



지난 시간에 배운 내용을 이용해서 티켓 생성 시각을 표시해 볼까요?


#1과 같이 테스트를 매크로를 작성하고 티켓에서 실행하면 #2와 같이 표시됩니다.

하지만 티켓에 표시된 실제 생성 시각인 #3과는 9시간이 차이가 나는 것을 알 수 있는데요.


이전 시간에 설명드린 것과 같이 #2에 표시되는 시각은 GMT 기준시이고, #3은 KST 기준이기 때문입니다.


이 문제를 해결하기 위해서는 #2에 표시되는 시각에 9시간을 더해줘야 합니다.


일단 유닉스 타임스탬프로 다시 돌아가볼까요?


1970년 1월 1일부터 티켓 생성 시각까지의 시간을 초로 연산하는 것이 유닉스 타임스탬프라고 했습니다.


그럼 #2에서 표시되는 시각이 사실은 숫자에 해당하니까 그 숫자에 9시간을 초로 환산하여 더한 다음에 DATE 필터를 사용하면 어떨까요?


정리해서 이야기하면 아래와 같을 것입니다.


1. 티켓 생성 시각을 가져온다. 

2. 티켓 생성 시각을 유닉스 타임스탬프 형태(1970년부터 티켓 생성시각까지의 초 합산)로 바꾸어 준다.

3. 티켓 생성 시각에 9시간에 해당하는 초 (9시간 * 3600초 = 32400초)를 더해준다.

4. 위 값을 시간 형식으로 변환하도록 한다.


1번과 2번, 4번은 우리가 기존에 배운 내용을 통해 해결할 수 있는데요. 


3번의 자리표시자에 특정한 값을 더하려면 그 명령을 수행해 줄 PULS 필터가 필요합니다.

예를 들어 


{{ 4 | plus: 2 }} 와 같은 리퀴드 마크업을 작성하고, 티켓에 매크로를 적용한다면, 내부메모 창에는 6으로 표시가 될 것입니다.


위 내용을 포함하여 다시 한번 리퀴드 마크업 구문을 정리해 볼까요?


1. 티켓 생성 시각을 가져온다. -> {{ticket.created_at_with_timestamp

2. 티켓 생성 시각을 유닉스 타임스탬프 형태로 바꾸어 준다. -> | date: "%s"

3. 티켓 생성 시각에 9시간에 해당하는 32400초 를 더해준다. -> | plus : 32400

4. 위 값을 시간 형식으로 변환하도록 한다. -> | date: "%Y년 %m월 %d일 %H:%M:%S"}}


이렇게 하나의 구문 안에서 두 개 이상의 필터를 사용해하는 경우를 필터 중첩이라고 합니다.


{{ticket.created_at_with_timestamp | date: "%s" | plus : 32400 | date: "%Y년 %m월 %d일 %H:%M:%S" }}


올바르게 작동하는지 테스트를 진행해 볼까요?


왼쪽과 같이 매크로를 생성하고, 티켓에 매크로를 적용해 보았습니다.


#2와 #3의 시간이 일치하는 것이 보이시나요?


이렇게 필터 중첩을 사용하면 자리표시자에 여러 가지 조건을 한 번에 적용할 수 있습니다.


필터 중첩을 정리해 볼까요?


1. 하나의 자리표시자에 여러 필터를 중복으로 적용할 수 있다.

2. 필터와 필터 사이를 | 로 구분한다.

3. 이때 필터는 왼쪽에서 오른쪽 순서로 적용된다.


이 내용을 이제 매크로에 적용하면 다음과 같은 일들이 가능해집니다.



상담사는 고객에게 메일을 보낼 때 손으로 티켓 생성 시각을 적을 필요가 없고,

고객은 손쉽게 자신이 언제 보낸 문의에 대한 답변인지 파악할 수 있게 되었습니다.




사실 필터 중첩 자체는 어려운 내용이 아니었는데, 시간 필터를 다루는 내용이 포함되다 보니 내용이 길어졌네요.


단순하게 필터 중첩이 가능하다고 설명할 수도 있지만, 그렇게 되면 적용이나 응용이 어렵기 때문에 실제 사용 사례를 중심으로 내용을 전달드리다 보니 다소 복잡하게 보였을 수도 있을 것 같습니다. 하지만 천천히 살펴보신다면 충분히 이해하실 수 있는 내용들이니까요. 걱정하지 않으셔도 좋습니다.


지금까지 문자와 시간을 다루는 필터들을 살펴보았는데요.


다음 시간에는 리퀴드 마크업에서 가능한 필터들은 어떤 것들이 있는지 필터 리스트에 대해 설명드리겠습니다.


함께 해주셔서 감사합니다.

작가의 이전글 [Zendesk 고도화] 리퀴드 마크업 활용하기 #8
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari