Google Apps Script에서 앵무새 반환 LINE Bot 만들기.

Google App Script에서 LINEBot을 만들 기회가 있었으므로 메시지에 회신하는 reply 메시지에 대해 씁니다.

왜 GAS를 사용합니까?



보통 LINE의 봇을 움직이려고 하면 서버 등이 필요하지만 GAS는 함수를 사용하여 웹 서버로도 이용할 수 있으므로 스스로 서버를 준비하지 않아도 LINEBot을 개발할 수 있습니다.
나중에 스프레드시트나 캘린더 등 Google 서비스와도 쉽게 연결할 수 있습니다.

그래서 이번에는 Bot의 기본인 앵무새 반환 Bot을 GAS로 만들어 보겠습니다.

필요한 것



LINE 계정
Google 계정

액세스 토큰 얻기



LINE Developers
여기에서 "MessagingAPI 시작"을 선택하고 적절하게 Bot 계정을 만드십시오.
봇 계정이 생기면 Channel 기본 설정 화면으로 가서 처음에는 액세스 토큰이 발행되지 않았으므로 재발행 버튼을 눌러 발행하고 메모해 둡니다. 그리고 Webhook 전송을 활용하기 위해.
LINE@의 기능은 모두 꺼집니다.


GAS에서의 개발



GAS 개발 화면은 GoogleDrive에서 사용할 수 있습니다.


적절하게 프로젝트 이름 등을 넣으십시오.

그건 그렇고, GAS는
Container Bound Script
Standalone Script
2 종류가 있습니다.

Container Bound Script는 스프레드시트와 같은 메뉴에서 '스크립트 편집기'를 시작하고 작성하는 스크립트입니다.


Standalone Script는 Drive에 직접 만드는 스크립트입니다.

이번에는 Standalone Script를 사용하고 있다는 것입니다.
Container Bound Script로 LINEBot을 작성해 보았습니다만, 잘 움직이지 않았습니다.

그래서 GAS 편집기가 열리면 아래 코드를 작성하십시오.
//LINE Developersで取得したアクセストークンを入れる
var CHANNEL_ACCESS_TOKEN = 'YOUR_CHANNEL_ACCESS_TOKEN'; 
var line_endpoint = 'https://api.line.me/v2/bot/message/reply';

//ポストで送られてくるので、送られてきたJSONをパース
function doPost(e) {
  var json = JSON.parse(e.postData.contents);

  //返信するためのトークン取得
  var reply_token= json.events[0].replyToken;
  if (typeof reply_token === 'undefined') {
    return;
  }

  //送られたメッセージ内容を取得
  var message = json.events[0].message.text;  

  // メッセージを返信    
  UrlFetchApp.fetch(line_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': reply_token,
      'messages': [{
        'type': 'text',
        'text': message,
      }],
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

CHANNEL_ACCESS_TOKEN에 자신의 액세스 토큰을 넣으십시오.

Webhook URL 설정



그런 다음 LINE 봇 설정 화면에 Webhook URL을 넣기 위해 GAS 앱 URL을 가져옵니다.


GAS 화면에서 [공개] -> [웹 애플리케이션으로 배포]를 선택합니다.



애플리케이션에 액세스할 수 있는 사용자를 모두(익명 사용자 포함)로 설정



그러면 URL을 얻을 수 있으므로 이것을 복사하십시오.



LINE Developers의 봇 설정 화면의 WebhookURL에 페이스로 합니다.

완성





잘하면 이런 느낌으로 자신이 보낸 메시지를 그대로 되돌려줍니다.

조금 해설



doPost 함수는 웹 앱에 POST 요청이 전송되었을 때 실행되는 함수로 LINEBot에 메시지가 전송되면 LINE 서버가 WebhookURL로 설정한 URL에 POST 형식으로 메시지를 보내므로 GAS가 받고 JSON을 구문 분석하고 답장을 보내는 리플라이 토큰과 메시지 내용을 가져오고 답장을 위한 JSON 형식에 넣습니다.
https://api.line.me/v2/bot/message/reply

끝점에 회신 중입니다.

회신에 넣는 메시지의 내용은 이 JSON 부분에서 설정하고 있으며,
'messages': [{
        'type': 'text',
        'text': message,
      }],

변수 message에 회신하는 메시지가 들어 있기 때문에, 이 내용을 바꾸면, 앵무새 반환 이외의 Bot를 만들 수도 있습니다.

마지막으로



이런 식으로 GAS를 사용하면 쉽게 서버리스로 LINEBot을 만들 수 있습니다.

다음 번은 GAS에서 Bot에서 메시지를 보내는 PUSH 메시지를 만드는 방법을 설명하겠습니다.

좋은 웹페이지 즐겨찾기