Cloud Funtions를 사용하여 Hangouts Chat Bot 만들기

소개



Hangout에서 움직이는 Bot을 만들어 이용하고 있었지만,
사용중인 BOT 라이브러리가 더 이상 작동하지 않으므로
일단 HangoutsChatBot은 어떻게 만들 것인지를 시도했습니다.

행아웃 Bot 만들기
G Suite 조직 내 사용자의 약속을 이름에서 가져옵니다.

Hangouts Chat Bot은?



Google Hangouts Chat Bot 정보
Chat Bot Concepts을 참조하십시오.

어떻게 만드는가?



Hangouts Chat Bot은? 부분의 링크에도 있지만,
몇 가지 방법이 있습니다.
  • Google Apps Script Bot - GAS를 사용하여 생성.
  • Google Cloud Functions bot - Cloud Functions에 Bot의 처리를 작성. Node.js와 Python으로 만들 수 있습니다.
  • Incoming webhook - webhook을 사용하여 Bot을 만듭니다. 샘플은 Python이지만 무엇이든 좋은 생각이 든다.
  • REST API - 개발자 페이지에는 샘플이 없지만 REST API를 사용하여 Bot을 만들 수 있습니다. 주요 언어의 클라이언트 라이브러리가 준비되어 있습니다.

  • 이번에는 Google Cloud Functions를 사용하여 Bot을 만듭니다.
    ※Hangouts Chat 릴리스 후에 GAS라든지 webhook를 사용한 Bot을 만드는 방법은 보였지만, Cloud Functions를 사용한 것은 그다지 보이지 않았기 때문에.

    전제 조건



    계정



    Google 계정.
    Google Cloud Console에서 청구처가 설정되었습니다.

    작성 절차



    자습서를 기반으로 Cloud Functions Bot 만들기



    그 중 하나는 Hangouts Chat Bot 개발자 페이지 튜토리얼를 기반으로 Cloud Functions Bot을 만듭니다.

    1. Cloud Functions 만들기



  • Google Cloud Console을 열고 새 프로젝트를 만듭니다.
  • API 라이브러리에서 Cloud Functions API를 사용하도록 설정합니다.
  • 콘솔의 탐색 메뉴에서 Cloud Functions 페이지로 전환
  • Cloud Functions 페이지에서 함수 만들기를 클릭하여 새 함수를 만듭니다.
  • 각종 설정은 다음과 같습니다
  • 소스 파일 다음을 복사합니다.
  • /**
     * Google Cloud Function that responds to messages sent from a
     * Hangouts Chat room.
     *
     * @param {Object} req Request sent from Hangouts Chat room
     * @param {Object} res Response to send back
     */
    exports.helloHangoutsChat = function helloHangoutsChat (req, res) {
    
      var sender = req.body.message.sender.displayName;
      var image = req.body.message.sender.avatarUrl;
    
      var data = createMessage(sender, image);
    
      res.send(data);
    };
    
    /**
     * Creates a card with two widgets.
     * @param displayName the sender's display name
     * @param imageURL the URL for the sender's avatar
     */
    function createMessage(displayName, imageURL){
      var HEADER = {
        "title": "Hello " + displayName + "!"
      };
    
      var SENDER_IMAGE_WIDGET = {
        "imageUrl": imageURL
      };
    
      return {
        "cards": [{
          "header": HEADER,
          "sections": [{
             "widgets": [{
               "textParagraph": {
                 "text": "Your avatar picture:"
               }
             }, {
               "image": SENDER_IMAGE_WIDGET
             }]
          }]
        }]
      };
    }
    
  • 위의 설정을 한 후 만들기 버튼을 클릭하여 만듭니다. ※빌드에 30초~1분 정도 걸리거나 합니다.

  • 2. Hangouts Chat Bot 공개 설정



    Hangouts Chat Bot의 공개 설정을 실시합니다.
  • API 라이브러리에서 Hangouts Chat API를 활성화합니다.
  • Hangouts Chat API 설정은 다음과 같습니다. 연결 설정 BotURL은 Cloud Functions URL을 설정합니다.
  • 위의 설정을 한 후 변경 사항 저장 버튼을 클릭하여 저장합니다.

  • 3. 만든 Bot를 움직인다



  • Hangouts Chat을 엽니다.
  • 검색 창에서 bot로 메시지 보내기를 선택합니다.
  • bot를 검색에서 만든 Bot의 이름을 입력하면 후보에 나오므로 메시지를 클릭합니다.
  • Bot과 직접 메시지로 채팅 할 화면으로 전환합니다.
  • Bot에게 말하면 인사와 계정 아이콘 이미지가 표시됩니다.
  • 이것으로 샘플의 작성·동작 확인이 종료합니다.

  • 깨달은 것


  • Bot 작성 자체는 간단하게 할 수 있다.
  • Bot 자체는 하나의 프로젝트당 하나만 만들 수 있다. (Hangouts Chat API가 둘 이상 지원되지 않기 때문에)
  • Bot의 이름에 일본어 설정해도 반영되지 않았다…
  • 좋은 웹페이지 즐겨찾기