LINEbotを作ってみた~googleの力を借りて~

この記事はCCS Advent Calendar 2018 5日目の記事です。

adventar.org

前の人 おじょう

qiita.com

おはようございます、KOMA27です。OBなのに大学にいます。

今回はいつもと違って技術的なお話です。

 

嘘です。(3行でバレる嘘をつくな)

正確には半分嘘です。

LINEbotという誰でも1度は聞いたことのあるbotを今回は作ろうと思います。

簡単に作ってみたものが以下のとおりです。

f:id:starealnight:20181204231501p:plain

音ゲー課題曲botテスト画面の様子

こんな感じのものを今回は作ろうと思います。

けど最初の部分だけね。

事前に用意するもの

・LINEの個人アカウント

Googleのアカウント

・適当なぱそこん

・やるき

 

 

1.準備

1-1.LINE Business アカウントの作成

↓ここから頑張って(書くと長いので)

https://business.line.me/ja/services/bot

作るのは一般アカウントで大丈夫です。

1-2.Messaging API Developer Trialに登録

Line Business centerのアカウントリストに「Messaging API Developer Trial」があるので

クリックして申請をする、以上。

 

1-3.LINE@ MANAGERの設定

Bot設定でAPIを利用するを有効にする

Webhook送信を利用するにチェック

 

f:id:starealnight:20181204232720p:plain

LINE Developersで設定するでLINE Developersに移動する

初めの登録を完了させると、チャネル基本設定下部でアクセストークンが手に入る

f:id:starealnight:20181204233030p:plain

f:id:starealnight:20181204233201p:plain






一応準備は完了

 

2.Google Apps Scriptを使ってコードをバシバシ書く

言語はJavaScriptだが、慣れてない人が多いはず。でも安心してほしい。ほぼコピペでよい。

Google Apps Script https://script.google.com/home

上のページから「新規スクリプト」で新しくプロジェクトを作ろう。

無題のプロジェクトを適当に名前を変えたらあとはコピペだ!

 

//CHANNEL_ACCESS_TOKENを設定
//LINE developerで登録をした、自分のCHANNEL_ACCESS_TOKENを入れて下さい
var CHANNEL_ACCESS_TOKEN = 'YOU_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;
 }

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

 //返信する内容を作成
 var reply_messages;
 if ('かっこいい' == user_message) {
   //かっこいいと入力された際
   reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

 } else if ('かわいい' == user_message) {
   //かわいいと入力された際
   reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

 } else if ('普通' == user_message) {
   //普通と入力された際
   reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

 } else {
   //かっこいい、かわいい、普通が入力されたときの処理
   reply_messages = ['「かっこいい」、「かわいい」、「普通」で入力してくださいね!'];
 }

 // メッセージを返信
 var messages = reply_messages.map(function (v) {
   return {'type': 'text', 'text': v};    
 });    
 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': messages,
   }),
 });
 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

これらは、ある特定のワードを受け取った時に、特定の返信をするコードだ。

コードのコピペをして、アクセストークンを書き換えたら、下記のように、

ウェブアプリケーションとして導入」をクリック

f:id:starealnight:20181204232450p:plain


プロジェクトバージョンは、ソースコードを更新したら「新規作成」。

次のユーザーとしてアプリケーションを実行はそのまま。

アプリケーションにアクセスできるユーザーは「全員(匿名ユーザーを含む)」

にして導入。

f:id:starealnight:20181204232532p:plain

するとURLが出てくるので、これをLINE@ MANAGERにぶち込む

f:id:starealnight:20181204232552p:plain

>完成<

 ちなみにこのGoogle Apps Script、当然の如くスプレッドシートと連携ができる。

スプレッドシートにデータベースを置いておくことで、いろんなLINE BOTが作れると思う。

私はボルテと弐寺のランセレbotを作りました。

 興味があったら試してね。

f:id:starealnight:20181204233235p:plain

KOMA27 SDVX弐寺課題曲bot

 

 

ブログランキング・にほんブログ村へ
にほんブログ村