#この記事を書いた人
COBOLで昔ながらのシステムを開発保守するお仕事をしています。
そのため、
Webの知識はありません。
Web開発の経験もありません。
書いてあることは参考程度にしてください。
なにか間違っていたらご指摘ください。
がんばって直します。
#背景
LINEでメッセージを送信したり、受信内容に応じた返信をしたりできるAPI(LINE Messaging API)が2016年9月末に公開されました。
LINE Developer Trialに登録することで、個人でも無料で開発を行うことができるようになりました。
#やりたいこと
LINEbotを作りたい。
初心者がつまづきがちな環境構築をせずに(実際にはするけど非常に簡単)、
とりあえず動くモノを作りたい。
Googleが提供している言語「GoogleAppsScript」を使うことによって、
Webアプリの公開・プログラミング環境の構築が容易に行えます。
(GoogleAppsScriptはJavaScriptをベースにした開発言語なんだそうです)
まず、一番簡素な例として、
「どんなメッセージに対しても固定のメッセージを返す」ような機能を実現します。
#必要なもの
- Googleのアカウント
- Googleドライブ上にアプリケーション等を保存します。
- LINEのアカウント
- 普段使っているアカウントがあればよいです。
- 時間(1時間くらい?)
- ぼくの場合は諸々の登録~動作確認までで1時間ほどでした。
#準備
- Googleアカウント登録
- 説明しません。適当に登録してください。
- LINEアカウント登録
- 説明しません。適当に登録してください。
- LINE Developer Trialの登録
- https://business.line.me/ja/services/bot
- 「Messaging APIを始める」から適当に登録してください。
- LINE@ MANAGERの設定
- アカウント選択 => アカウント設定 => Bot設定 で、次のように変更してください。
- Webhook送信:利用する
- Botのグループトーク参加:利用しない
- 自動応答メッセージ:利用しない
- 友だち追加時あいさつ:(どっちでもいいです)
- アカウント選択 => アカウント設定 => Bot設定 で、次のように変更してください。
- LINE developersの設定
- QRコードを読み込んで友達になっておく
- Channel Access Token => ISSUE で発行された文字列をメモ(あとでコードに貼り付けます)
#さぁ、開発を始めましょう
#実現したい機能
- 利用者から見た機能
- LINEbotになにかしらを送ると、LINEbotから固定メッセージが返ってくる
- 開発者から見た機能
- 利用者からなにかしらが送られてくると、利用者に固定メッセージを返す
具体的には固定メッセージを「へんじがない。ただの しかばね のようだ。」としましょう。
アプリケーションを準備します。
Googleドライブ => 新規 => その他 => Google Apps Script
▼多分初回は選択肢にないので「アプリ追加」から「Google Apps Script」を追加します。
コード.gsを以下のように書き換えます。
利用者のなにかしらのアクション(メッセージ送信とかスタンプ送信とか)をキッカケに、
「へんじがない。ただの しかばね のようだ。」とメッセージを送信する、という内容です。
// xxx部分をChannel Access Token => ISSUE で発行された文字列に置き換える
var channel_access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
function doPost(e) {
var posted_json = JSON.parse(e.postData.contents);
var events = posted_json.events;
events.forEach(function(event) {
var postData = {
"replyToken" : event.replyToken,
"messages" : [
{
"type" : "text",
"text" : "へんじがない。ただの しかばね のようだ。"
}
]
};
var options = {
"method" : "post",
"headers" : {
"Content-Type" : "application/json",
"Authorization" : "Bearer " + channel_access_token
},
"payload" : JSON.stringify(postData)
};
var reply = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
});
};
- ファイルを保存する
- ファイル => 保存
- アプリケーションを公開する
- 公開 => ウェブ アプリケーションの導入
- プロジェクト バージョン:新規作成
- 更新したいときも「新規作成」を選択
- 次のユーザーとしてアプリケーションを実行:自分
- アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
- [導入]
- 現在のウェブ アプリケーションの URL:メモする
- プロジェクト バージョン:新規作成
- 公開 => ウェブ アプリケーションの導入
botとアプリケーションを連携します。
LINE developers => Basic information => Webhook URL
にさきほどメモしたURLを入力します。
[VERIFY]を押下して"Success"と表示されることを確認します。
※"Success"と表示されない場合、「アプリケーションにアクセスできるユーザー」や「現在のウェブ アプリケーションの URL」を確認してみてください。
botにメッセージを送信してみます。
返ってきたら成功です。
お疲れさまでした。
拡充する機能
やる気があったら更新します。
- 返信内容の変更
- オウム返しします。
- 特定キーワードへの個別応答をします。
- ランダムに返信します。
- ログの取得
- Googleスプレッドシートに保存します。
- ユーザプロフィールの取得
- Googleスプレッドシートに保存します。
- 送信されたコンテンツの取得(画像・動画・音声)
- Googleドライブに保存します。
- 送信された位置情報から周辺地図画像の作成(GoogleMap)
- 作成された周辺地図画像をGoogleドライブに保存します。
- URLの短縮(GoogleUrlShortener)
- URLが送信されてきたら、URLを短縮して返信します。
- 簡単な数式の計算
- 数式が送信されてきたら、Googleスプレッドシートに計算させて結果を返信します。
参考リンク
-
LINE Messaging API
- 公式のリファレンスです。
-
Line BotをGoogle App Scriptで無料で手軽に試してみる。
- 旧APIでの開発です。
-
Google Apps Scriptを使ってLINE Messaging APIでオウム返しをする
- この記事を参考にはじめました。ありがとうございます。