はじめに
LIGHTzアドベントカレンダー 2021の19日目の記事です。
この記事では、google apps script(GAS)を使ってサーバレスでLINEbotを作る方法をご紹介します。
LINE側でのアカウント取得やmessaging APIの初期設定については、前回の記事をご参照ください。
前回のおさらい
- LINE公式アカウント(無料版)を作成した。
- LINE messaging APIを有効化し、webhookを有効化、チャネルアクセストークンを取得した。
今回やること
- いよいよGoogleAppsScript (GAS)を書いていきます!
- まずは「友だちから受け取ったメッセージを取得し、返す」というシンプルなbotをつくります。
GASを書いてみよう
- googleアカウントにログイン
- google app scriptのページに移動
- 「新しいプロジェクトを作成」をクリック
- エディタが開きました!ここにコードを書いていきます。
ひよこ返しbotのコードを入力
//スクリプトプロパティ(後述)で定義したアクセストークンを入れる
const ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty("ACCESS_TOKEN");
//endpointのURIを定義
const line_endpoint = 'https://api.line.me/v2/bot/message/reply';
//ポストでLINEのメッセージ内容が送られてくるので、送られてきたJSONをパース
function doPost(e) {
const json = JSON.parse(e.postData.contents);
//送られてきたメッセージに対して返信するトークンを取得
const reply_token= json.events[0].replyToken;
if (typeof reply_token === 'undefined') {
return;
}
//パースされたJSONからメッセージ部分を取得
const message = json.events[0].message.text;
// メッセージをendpointに返信
UrlFetchApp.fetch(line_endpoint, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + 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);
}
スクリプトプロパティにアクセストークンを入力
※ アクセストークンの取得方法については前回の記事で解説しています
いよいよデプロイ
-
[公開]→[ウェブアプリケーションとして導入]をクリック
-
Project Version:Newを選択
-
Execute the app as : Meを選択
-
Who has access the app: Anyone,even anonymousを選択
(重要!LINE側からアクセスする必要があるため、今回はwebアプリは公開する必要があります)
-
[Deploy]をクリック
-
下記画面が表示されたらデプロイ完了です!お疲れさまでした。
「Current web app URL」をコピーしましょう。
※公開したwebアプリのURLの管理には気を付けましょう。
LINE側のwebhookに公開したwebアプリを設定
- LINE公式のアカウントマネージャー→アカウントに移動
- 右上の設定ボタンをクリックして、[messaging API]の設定画面に移動
- Webhook URLに先ほどコピペした「Current web app URL」を貼り付け、「保存をクリック」
自分のLINEアカウントでテスト
-
LINE公式のアカウントマネージャーの[ホーム]→[友達を増やす]→[友達追加ガイド]から、自分の個人LINEアカウントに追加できます(URL or QRコード)
-
もちろんアカウントID直打ちで追加してもOK
なんかしゃべってみる
ね、簡単でしょう?
GASもLINEbotも初めてでしたが、20分程度で作成できました!
次回はいよいよタイマー機能の実装に入っていきます。つづく。