brunch
매거진 이슈잇슈

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

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

by 코코

구글스프레드시트로 저장

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

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


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

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

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




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




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




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




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


Screenshot 2023-06-17 at 10.23.51 PM.png

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

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




2. 슬랙봇 셋팅하기


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

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



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

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




Screenshot 2023-06-15 at 9.02.57 PM.png

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

Create App클릭!






Screenshot 2023-06-15 at 9.07.26 PM.png
Screenshot 2023-06-15 at 9.07.44 PM.png

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

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






Screenshot 2023-06-15 at 9.04.30 PM.png
Screenshot 2023-06-15 at 9.05.09 PM.png
Screenshot 2023-06-15 at 9.05.28 PM.png
Screenshot 2023-06-15 at 9.06.22 PM.png

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

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





Screenshot 2023-06-15 at 9.08.13 PM.png
Screenshot 2023-06-15 at 9.08.28 PM.png

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

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







Screenshot 2023-06-15 at 9.08.49 PM.png

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






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




Screenshot 2023-06-17 at 10.12.15 PM.png

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

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






Screenshot 2023-06-17 at 11.01.57 PM.png
Screenshot 2023-06-17 at 11.02.15 PM.png

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






Screenshot 2023-06-18 at 2.33.33 PM.png

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

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








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

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




Screenshot 2023-06-18 at 2.49.50 PM.png

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









Screenshot 2023-06-18 at 2.50.47 PM.png

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








Screenshot 2023-06-18 at 2.52.41 PM.png

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








Screenshot 2023-06-18 at 3.04.51 PM.png

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




Screenshot 2023-06-18 at 3.08.49 PM.png
Screenshot 2023-06-18 at 3.08.23 PM.png 응답 제출하기 버튼을 눌렀을때 설문폼 양식이 바뀌는 예시







5. Interactivity & Shortcuts 셋팅하기

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


Screenshot 2023-06-15 at 9.48.01 PM.png

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








Screenshot 2023-06-15 at 9.48.13 PM.png
Screenshot 2023-06-15 at 9.48.29 PM.png
Screenshot 2023-06-15 at 9.48.45 PM.png
Screenshot 2023-06-15 at 9.48.58 PM.png

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

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






Screenshot 2023-06-15 at 9.49.34 PM.png
Screenshot 2023-06-15 at 9.49.57 PM.png

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

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







6. 테스트

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

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




Screenshot 2023-06-18 at 3.10.51 PM.png

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






Screenshot 2023-06-18 at 3.11.11 PM.png

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







Screenshot 2023-06-18 at 3.11.01 PM.png

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






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




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

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

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

이메일 : coen11@naver.com

keyword
매거진의 이전글자동화 끝판왕 슬랙봇 만들기(2)