Linebot에서 투표 시스템을 만들어 보았습니다.

3603 단어 SwiftlinebotVapor

소개



8년 정도 사용한 자작 PC가 망가졌으므로, 교체 머신을 검토한 결과 MacBook이 코스파 좋다고 하는 것으로 Mac을 구입.
절각이므로 Swift 공부해 볼까라고 생각했지만 백그라운드 아저씨의 자신에게는 갑자기 앱 개발은 난이도가 높은 것 같았기 때문에 지견이 있는 LINE Bot과 조합해 언어 학습을 실시하려고 생각해,
iOS 앱 개발 언어의 Swift로 서버 측 처리를 할 수 있는 프레임워크 "vapor"를 사용해 Line Bot을 작성해 보았습니다.

소재



고등학교의 부활의 OB회의 간사를 하고 있지만, 이제 대체하고 싶기 때문에
새로운 총무를 결정하는 투표 Bot을 만들었습니다.

개발 환경





ver


OS
macOS Catalina

Xcode
11.3

Swift
5.1.3

vapor
3.0.0


LineBot 만들기



Linebot의 작성 방법은 여기에 기재되어 있습니다.
- LINE Bot에서 결혼식을 페이퍼리스화해 보았다
※여유가 있으면 LineBot 작성만 정리한 기사 일으켜서 치환합니다.

Vapor



Vapor의 실행 환경 작성은 여기에 기재되어 있습니다.
  • ServerSideSwift Vapor3.0을 Heroku에 배포

  • 리치 메뉴



    이번에는 실행 트리거에 리치 메뉴를 사용합니다.
    기능으로서 투표를 할 뿐이므로, 메뉴 전체 ​​화면에서 1 버튼으로 해,
    버튼에 설정한 문장을 받으면 후보자 목록을 답장하도록 했습니다.


    플렉스 메시지



    이번 후보자는 30명 후가 되기 때문에, 후보자 일람은 Flex Message를 사용해 투표 버튼도 겸하는 형태로 했습니다.
    다른 메시지 유형과 다르게 처리할 수 있는 배열의 최대 수가 있으며 한 번의 응답으로 표시하려는 정보가 제한되지만,
    Flex Message는 CSS Flexible Box를 사용하여 메시지의 레이아웃과 동작을 정의할 수 있으며,
    많은 양의 콘텐츠를 보내고 싶을 때 매우 유용합니다.
    또, 이번은 투표라고 하는 성질상 그대로 투표 트리거의 버튼으로서 취급하는데 적합했습니다.



    공식적으로 시뮬레이터도 있으므로, 처음 만져도 어느 정도의 것은 어려움없이 작성할 수 있었습니다.
    Flex Message Simulator

    실행 결과





    투표 집계



    이번에는 Google Apps Script를 사용하여 스프레드시트에 기록하는 형태로 만들었습니다.
    LineId(A열)와 투표한 후보자 번호(B열)를 기록합니다.
    다시 다른 후보자를 선택한 경우 LineId를 키로 검색하여 후보자 번호를 덮어 씁니다.
    첫 투표라면 마지막 꼬리에 행을 추가하도록 하고 있습니다.
    투표 횟수를 카운트하고 있는 것은 무암하게 연타하는 배가 나타나지 않는지 체크하는 이유 때문에
    내가 LineId에서 사용자 프로필을 취득하지 않으면 (일단) 익명 투표가됩니다.


    덤 기능



    Linebot을 친구 추가만 받으면 손쉽게 투표할 수 있습니다만,
    친구를 추가하지 않고 스루하는 사람이 거기에있을 것이라고 예상하고,
    우선 추가해 보려고 마음이 일어나는 덤 기능을 구현했습니다.

    PokeAPI 을 사용하여 도감 번호에 해당하는 포켓몬 정보를 반환합니다.
    금요일 로드 SHOW! 로 명탐정 피카츄가 끝을 걸어 Linebot의 소식을 흘렸는데, 많이 놀아 노리고 있었습니다.

    결론



    신년회에서 슬슬 간사를 대신해주는 사람 없습니까-라고 부르더라도 아무도 없는 가운데
    Linebot이라는 방식으로 투표자는 몇 초 만에 끝나는 방식으로 익명 투표했기 때문에,
    특히 불평도 나오지 않고 간사 교체 할 수 있었기 때문에 올해부터는 부담없이 마시는 회만 참가할 수 있을 것 같습니다.

    좋은 웹페이지 즐겨찾기