今さらですが、Line BotをGoogle App Scriptで、何のインフラももたずに試してみました。
※すでに先着10,000名のトライアルは上限に達したそうです。
申し込みして、まだ試せてない人は、ぜひGoogle App Scriptで試してみてください。
Google App Script(GAS)の基本的なところ他の記事にお任せするとして、サンプルコードとおおまかな流れだけを説明します。
仕様
Line Botから投稿されたメッセージを、オウム返しするbotです。Line Botはただ送信されたメッセージを自分の持つシステムに届ける(Postされる)だけのシンプルな機構で、それを受け取った後、送信元に同じtextを返すというものです。
1. GASのコード
まずはGASのコードを準備していきます。
var channel_id = "<your channel id>"; //LineBotの管理画面から取得
var channel_secret = "<your channel secret>"; //LineBotの管理画面から取得
var mid = "<your mid>"; //LineBotの管理画面から取得
function doGet(e) {
return ContentService.createTextOutput(UrlFetchApp.fetch("http://ip-api.com/json"));
}
function doPost(e) {
var json = JSON.parse(e.postData.contents)
return reply(json.result[0]);
}
function reply(resultJson){
Logger.log(resultJson);
var url = "https://trialbot-api.line.me/v1/events";
var headers = {
"Content-Type" : "application/json; charset=UTF-8",
"X-Line-ChannelID" : channel_id,
"X-Line-ChannelSecret" : channel_secret,
"X-Line-Trusted-User-With-ACL" : mid
};
var postData = {
"to" : [resultJson.content.from],
"toChannel" : 1383378250, //これは固定値
"eventType" : "138311608800106203", //これは固定値
"content" : {
"contentType" : 1,
"toType" : 1,
"text" : resultJson.content.text + "!"
}
};
var options = {
"method" : "post",
"headers" : headers,
"payload" : JSON.stringify(postData)
};
return UrlFetchApp.fetch(url, options);
}
2. アプリケーションを公開する
GASのメニューの「公開」→「WEBアプリケーションとして導入」を開きます。
・プロジェクトバージョン:新規作成
・次のユーザーとしてアプリケーションを実行:自分
・アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
3. LinebotのCallback URLを設定する。
GASの公開されたアプリケーションURLをLine developersの管理画面からCallback URLを設定します。その際、ポート番号を必ず指定する必要があるので、以下の様なURLにします。
https://script.google.com:443/macros/s/<xxxxx>/exec
※注意:このCallback URLは設定してから有効になるまで、6時間以上かかるようです。急いでも反応しないので気をつけましょう。
4. 待ちます。
Callback URLの設定が有効になるのにとにかく時間がかかるので、とにかく待ちます。
5. GASからアクセスするIPを調べ、Whitelistに追加します。
上記まで設定で、受信出来るようになりますが、Linebotでメッセージを送信するには、IPをWhitelistに追加する必要があります。
function doGet(e) {
return ContentService.createTextOutput(UrlFetchApp.fetch("http://ip-api.com/json"));
}
この記述によって、GASの公開URLをgetRequestすると、アクセス元のIPを知ることが出来ます。公開URLをブラウザで叩いてみましょう。
IPが分かったらLine developersの管理画面からServer IP Whitelistを追加します。CIDRでの指定です。
例えば、IPが66.249.84.164であれば、66.249.84.1/24としておけばよいでしょう。
6. Linebot管理画面のQRコードをLINEに読み込みます。
QRコードから追加し、トークから何か送信してみます。オウム返しでメッセージが帰ってくるはずです。
以上です。
今回はGoogle App Scriptで紹介しましたが、シンプルな機構なので他の環境、言語でも可能かと思います。ただ、無料系のSSLではうまくいかない事があるらしいです。
bot元年、これからどういう展開になるか楽しみですね。また今後もGASで色々遊べそうです。