brunch

매거진 이슈잇슈

You can make anything
by writing

C.S.Lewis

by 코코 Jun 18. 2023

[자동화 끝판왕] 슬랙봇 메시지로 설문폼 응답 받기

메세지에 버튼, 입력폼 삽입으로 구성원 응답률 높이기

구글스프레드시트로 저장

슬랙봇을 활용하여 HR업무에 다양하게 적용 월 평균 60시간 가량의 리소스 효율화를 이뤄낼 수 있었다.

근태, 조직문화, 퇴직, 온보딩, 직무교육, 채용 등 다양한 슬랙봇이 탄생하여 열심히 활약 중..!


오늘은 슬랙봇의 기능 중 아주 유용하게 사용하는 설문폼으로 응답 받는 기능을 알아볼 예정이다.

슬랙봇의 여러가지 장점 중 자동화/효율화 다음으로 큰 장점은 '참여율, 응답률 증가'이다.

귀여운 슬랙봇이 알림을 주면? 참여율이 올라가고 오늘 함께 알아볼 메시지로 설문폼을 받으면 자연스럽게 참여율이 올라간다.




근무환경을 선택하는 설문을 발송하여 응답을 취합 후 구글스프레드시트에 저장해본다




준비물 : 구글스프레드시트, 슬랙




미리 준비해둔 시트의 이름, 슬랙아이디를 기반으로 슬랙에 설문 알림을 발송하여 사용자의 응답을 수집하여 각각의 응답을 기록해줄 예정이다. 시트 기반으로 알림을 보내는 방법은 기본편을 참고




1. 구글스프레드시트 준비


사용자별로 이름, 슬랙 ID와 수집데이터를 저장해둘 부분(근무타입, 건의사항)을 준비해준다

(각 사용자별 슬랙ID는 관리자에게 명단을 요청하여 정리한 뒤 VLookup으로 가지고 오면 가장 편리하다)




2. 슬랙봇 셋팅하기


슬랙봇을 생성해주어야한다.

셋팅 방법은 하나하나 차근차근 따라오면 된다.



2-1) https://api.slack.com/apps 슬랙 API 페이지에서 오른쪽 상단 Create an app을 클릭

- From scartch를 클릭하여 수동으로 설정하기로 하자




2-2) 이름은 설문봇으로 설정해주었고 워크스페이스는 알림을 발송할 워크스페이스로 설정!

Create App클릭!






2-3) 좌측 App Home > Edit 클릭 후 이름과 username을 작성한 뒤 Save를 클릭!

봇이름은 한글, 영문 상관 없고 Default username은 꼭 영문으로 작성해야한다!






2-4) 좌측 OAuth&Permissions > 하단 Scopes > Add an OAuth Scope를 클릭

chat:write와 im:write 권한을 추가해준다. 이 과정은 봇에게 권한을 주는 것인데 봇으로서 채팅을 쓸 수 있게 해주는 권한과 DM발송을 위한 권한에 해당한다.





2-5) 좌측 Install App > Install to Workspace를 클릭한 뒤

Allow를 클릭해준다. 이건 워크스페이스에 봇 앱을 설치해주는 과정이다







2-6) 결과적으로 봇 고유의 토큰 값이 생성되었는데 이 토큰 값은 매우 소중한 값이니 메모장에 고이고이 모셔두어야한다.(외부 유출 절대 금지!)






3. 코드 작성하기(설문폼 발송 부분)




3-1) 설문폼 시트를 변수로 저장해주고 설문폼 메시지 발송을 셋팅하기 위한 함수를 설정해준다.

그 다음 for문을 활용하여 이름, 슬랙아이디를 저장해준다음 메시지 발송 함수를 실행! 반복문을 돌려줌!






3-2) 설문폼을 꾸며줄 차례이다. 설문폼은 각 질문을 구분하기 위한 구조화 작업이 필요하기 때문에 block kit으로 구성해야 편한다. block kit을 조금 더 편하고 직관적으로 구성하기 위해서 block kit builder를 사용해보자.






간단하게 2가지 질문으로만 구성해봤다. 객관식 1문항, 주관식 1문항. 

객관식은 radio-buttons로 주관식은 plain_text_input으로 구성하였고 각각의 닉네임을 주어 우리가 응답을 받았을 때 구분할 수 있도록 해주었다.








4. 코드 작성하기(답변 수신하는 부분 - doPost(e))

구성원이 답변 작성 후 응답 제출하기 버튼을 클릭했을 때 어떤 동작이 실행되는지를 처리해주는 코드를 작성해보자.




4-1) 4-6번 줄은 파라미터를 받아서 변수로 저장해주는 부분이다. 우리가 주목해야하는 부분은 json이다. 사용자 응답에 대한 모든 정보(누가 작성했는지, 뭐라고 작성했는지, 언제 작성했는지 등)를 열람할 수 있는 데이터가 바로 json에 저장된다는 사실! 이 정보를 가지고 우리가 판단하고 스프레드시트로 넘겨주면 된다









4-2) json데이터를 별도의 나만의 체널에 발송하여 값을 어디에서 가져와야하는지를 봐야하는데 logsendMessge함수를 만들어서 해결하면 된다. 나만의 카톡방 느낌(?)으로 잘 활용해주면 좋다.








4-3) 사용자의 답변을 wirteRespose함수를 활용하여 스프레드시트에 기입해준다. writeRespose함수는 답변과 사용자 슬랙 ID를 가지고 적절한 위치에 기록해주는 함수라고 보면된다.








4-4) messageChangeResult함수를 통해 사용자가 응답 제출하기 버튼을 클릭했을 때 '정상적으로 제출이 완료되었습니다' 메시지로 폼이 변경되는 함수를 작성해준다. 만약 이렇게 변경되지 않는다면 사용자가 답변이 제대로 제출이 되었는지 알 수 없을뿐더러 답변을 중복으로 제출할 가능성도 높기 때문에 꼭 처리를 해주는 게 좋다.




응답 제출하기 버튼을 눌렀을때 설문폼 양식이 바뀌는 예시







5. Interactivity & Shortcuts 셋팅하기

설문폼을 받고 해당하는 답변을 입력후 제출하기 버튼을 눌렀을 때 그 응답을 받아주는 부분을 코드로 만들었다면 Slack API 페이지에서도 설정을 해주어야한다.


5-1 ) Apps Script 창 오른쪽 상단에서 배포>새배포를 클릭한다.








5-2) 톱니바퀴 아이콘 > 웹앱을 클릭 > 각각의 설정을 해주고 배포를 클릭한다.

웹앱 URL이 생성되는데 중요한 URL이니 만큼 꼭 기억해두고 복사해둔다.






5-3) Interactivity&Shortcuts메뉴에서 off를 on으로 변경해준 다음, Request URL에 방금 복사한 URL을 입력해주고 오른쪽 하단에 Save Changes 버튼을 클릭하여 마무으리~ doPost(e) 함수의 내용을 반영해주는 과정이므로 향후에 doPost(e)의 코드가 변경될 경우 반영하고 싶다면 다시 배포를 하여 Request URL에 적용후 저장해두어야 반영이 된다는 사실을 꼭 기억해두어야한다!

(나는 정말 수십번도 더 넘게 배포하여 저장했던 기억이...ㅎㅎ)







6. 테스트

이제 테스트를 진행할 차례이다.

설문폼 메시지 발송 > 사용자 답변 입력 > 구글스프레드시트로 저장 > 사용자가 보는 화면에서 설문폼이 제출 완료 상태로 업데이트




6-1) 설문폼 메시지 발송 > 사용자 답변 입력






6-2) 구글스프레드시트로 저장







6-3 ) 사용자가 보는 화면에서 설문폼이 제출 완료 상태로 업데이트






사실 이렇게 하나하나 셋팅하는데 걸리는 리소스가 아깝기도 하고 번거롭다고 느껴질 수도 있으나 100여명 많게는 수천명의 직원들에게 알림을 발송하거나 그 응답을 자동으로 취합하는데는 리소스가 대단히 많이 절약되는 효과를 얻을 수 있을 뿐만 아니라, 사용자(답변자) 입장에서도 구글설문과 같이 설문 페이지로 이동하여 작성하는 과정을 슬랙메시지 안에서 간편하게 처리할 수 있으니 참여도까지 높일 수 있는 꿀팁이 아닐 수 없다.




알고 싶은 부분이나 막히는 부분이 있다면 댓글로 부탁드립니다.

따로 포스팅을 올리거나 개별 답변드리도록 하겠습니다.

링크드인 : https://www.linkedin.com/in/cocosociety/

이메일 : coen11@naver.com

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari