RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

GASを用いたサーバーレスで作るLINEbot

はじめに

こんにちは。新卒2年目のEngawaです。
今回はGASを用いてサーバーレスでLINEbotを作成しましたので紹介してきます。

GAS(Google Apps Script)とは

Googleが提供しているプログラミング環境のことです。スクリプトの言語は、JavaScriptをベースとしています。
GASについては以前このブログで分かりやすく書いている記事があるのでご覧ください。

tech-blog.rakus.co.jp

bot作成

新規チャンネルの作成と設定

はじめにLINE Developers を使用して新規チャンネルを作成していきます。
LINE Developersにアクセス後Lineのアカウントでログイン > 新規プロバイダーの作成 > 新規チャンネルの作成の流れで進めてください。
新規チャンネルの作成時、 LINEログインMessaging APIClovaスキルのいずれかを選択する画面が表示されますが、Messaging APIを選択してください。あとは必須箇所を適当に埋めて同意すれば作成完了です。

作成完了後、作成したチャンネルを選択し、チャンネル基本設定の画面を下にスクロールするとアクセストークンの項目があるので再発行ボタンを押してアクセストークンを発行しておいてください。GAS と紐づける際に必要になります。 f:id:Engawa:20191103154150p:plain

さらに下にスクロールすると自動応答メッセージの項目があるので設定はこちらのリンクをクリックして応答設定画面を開いてください。
詳細設定に応答メッセージWebhookの項目があるので、
応答メッセージ:オフ
Webhook:オン
で設定してください。 設定変更後は画面を閉じて、作成したチャンネルのチャンネル基本設定の画面を更新してください。 f:id:Engawa:20191103151704p:plain

GAS作成

以下をスクリプトエディタに記載します。
ACCESS_TOKEN部分には上記で発行したアクセストークンを記入してください。

// アクセストークン 
var ACCESS_TOKEN = '' 
  
// メッセージが送付された際に、実行される関数 
function doPost(e){
    var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 
    var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 
    var url = 'https://api.line.me/v2/bot/message/reply'; 
    var headers = { 
      'Content-Type': 'application/json; charset=UTF-8' ,
      'Authorization': 'Bearer ' +ACCESS_TOKEN 
    };
    
    var payload = JSON.stringify({ //メッセージ送信内容
      'replyToken': replyToken ,
      'messages': [{   
         'type': 'text' ,
         'text': userMessage 
        }] 
      } ) 
    
    var options = { 
      'headers' : headers ,
      'method' : 'post' ,
      'payload' : payload }; 
    
    
    // メッセージを応答 
    UrlFetchApp.fetch(url ,options)
}

URLの発行

作成したスクリプトにアクセスできるように設定します。下記手順で実施してください。
・ 公開 > ウェブアプリケーションとして導入
・ Execute the app as:me
・ Who has access to the app:Anyone,even anonymous(全員(匿名ユーザを含む))
f:id:Engawa:20191103150352p:plain ・Deplyボタンを押下するとURLが作成されます。

発行したURLの設定

作成したチャンネルを選択し、チャンネル基本設定の画面を下にスクロールするとWebhook送信Webhook URL ※SSLのみ対応の項目があるので、
Webhook送信:利用する
Webhook URL ※SSLのみ対応:発行したURL
をそれぞれ設定します。

f:id:Engawa:20191103160414p:plain

これで作成と設定は完了です。

実行

bot作成が完了したのであとは実行です。
チャンネル基本設定にLINEアプリへのQRコードがあるので読み取って登録してください。
あとはLINE上で適当な文字を打ち込めば、打ち込んだメッセージを返してくれます。
f:id:Engawa:20191103153028p:plain 今回は入力した文字列をそのまま返すようになっているのですが、特定の文字が打ち込まれた時に返すメッセージを指定するにはスクリプトの一部を以下のように変更すれば可能です。

var reply = null;
    if(userMessage === 'おはよう'){
     reply = 'ございます';
    }else{
     reply='さようなら';
    }
    
    var payload = JSON.stringify({ //メッセージ送信内容
      'replyToken': replyToken ,
      'messages': [{   
         'type': 'text' ,
         'text': reply //ここを変えると送信するメッセージを変更できる
        }] 
      } ) 

f:id:Engawa:20191103153909p:plain

おわりに

今回はサーバーレスでLINEbotを作成しました。
APIを用いて天気予報や電車遅延情報を取得し、返答メッセージとして設定しておくことで確認することもできます。

参考

tech-blog.rakus.co.jp

Copyright © RAKUS Co., Ltd. All rights reserved.