공용 슬랙 메시지 전송 숏컷

이전 오토메이션 공용환경 소개를 통해 슬랙에 메시지를 보내는 공용 환경을 소개했습니다. 슬랙에 메시지를 자동으로 보낼 수 있게 되면 여러 용도에 활용할 여지가 생깁니다. 규칙적으로 해야 하는 공지를 빼먹지 않을 수도 있고 간단한 보고를 자동화 할 수 있을 뿐 아니라 메일을 확인하거나 다른 이벤트를 쉽게 파악할 수 있게 됩니다.

한편 슬랙에 메시지를 전송하는 숏컷은 처음 만들어 놓고 조금씩 수정해서 사용하다가 이전에 보낸 메시지에 답글을 달아야 하는 요구사항을 반영하려고 보니 답글을 달아야 하는 상황이 그리 크지 않아서 공용 숏컷을 수정하는 대신 답글을 달아야 하는 숏컷에 별도로 슬랙 메시지를 전송하는 기능을 붙였습니다. 그런데 이렇게 다시 시간이 흐르고 보니 슬랙 메시지 전송 기능을 수정하려 하자 같은 기능을 하는 숏컷 여러 부분을 고쳐야 하는 상황이 일어납니다. 이 참에 공용으로 사용하는 슬랙 메시지 전송 숏컷을 범용으로 사용하도록 수정하고 답글을 다는 기능 역시 공용 기능에 포함시켜 숏컷 하나로 통합하기로 했습니다.

그래프

결과

설명

그래프

결과

설명

다른 숏컷에서 슬랙에 메시지를 보내고 싶을 때 이렇게 사용합니다. 워크스페이스, 채널, 메시지, ts를 딕셔너리에 넣어 보내면 됩니다.

다른 메시지에 답글을 달고 싶으면 ts에 숫자를 채워 보내면 되고 빈 값으로 보내거나 ts 없이 보내면 새 메시지로 전송됩니다.

 

인자로 받은 워크스페이스, 채널, 메시지, ts를 딕셔너리 째로 저장합니다.

 

메시지를 전송할 워크스페이스와 답글을 다는데 사용할 ts를 먼저 읽어 각각 저장해 둡니다.

 

메시지채널을 읽어 저장하되 이 값들은 한글이 포함되어 있을 수 있으므로 URL 인코딩을 해 둡니다.

 

인자로 받은 워크스페이스 이름으로 슬랙 API 키를 매칭해 줄 생각입니다.

 

워크스페이스 이름에 따라 슬랙 API 키를 정합니다. 조건문을 이렇게 사용한 이유는 애플 숏컷에서는 if-elseswitch가 없기 때문입니다.

미래에 메시지를 보낼 워크스페이스가 더 늘어나면 이 부분을 분리해 따로 저장해 읽어오면 좋을 것 같습니다.

 

슬랙에 메시지를 보낸 다음 결과를 기록합니다.

 

메시지 전송에 실패하면 이 숏컷을 호출한 숏컷에 실패라고 전달합니다.

사실 슬랙 메시지 전송에 실패할 상황이 일어나도 대부분 직접 해결할 수 없는 문제일 거라고 예상해 자세한 상황을 전달하지는 않고 있습니다.

메시지 전송에 성공하면 장차 이 슬랙 메시지에 답글을 달 경우에 대비해 메시지 고유번호인 ts를 돌려줍니다. 이 숏컷을 부른 쪽에서 ts를 써도 되고 안 써도 됩니다.

이전에 ts가 필요한 숏컷과 그렇지 않은 숏컷 사이에 슬랙 메시지 전송 기능을 따로 나눠 사용할 때는 기능을 고칠 때 좀 귀찮고 복잡했었는데 한결 나아졌습니다. 다만 실패 처리가 좀 불안하고 또 분명 ts 말고 돌려줄 것이 더 있을 것 같습니다. 요구사항이 생길 때 알아봐야겠습니다. 또 워크스페이스에 따라 다른 API 키를 얻어 오는 부분은 그래프에 키를 그냥 넣어 놨는데 이게 아무데도 올릴 수 없는 숏컷이라서 망정이지 다른데 올릴 수 있었으면 분명 보안 사고가 일어날 겁니다. 이 부분은 별도 데이터로 빼서 워크스페이스에 따라 키를 그때그때 돌려받는 모양으로 바꾸는 것이 좋을 것 같습니다.