概要
こんにちは,よしデブです.
LINEのMessaging APIに興味を持ったので簡単なbotを作ってみました.
今回はサンプル編ということで以下の記事を参考にさせていただき,自分でサンプルプロジェクトを作ってみました!(LINEのBot開発 超入門(前編) ゼロから応答ができるまで)
上記記事ではHerokuというPaaSを使っているので,真似して初挑戦してみます!!
実はNode.jsのWebフレームワークであるExpressも初挑戦ですが,Laravel経験者なのでこれはなんとかなるでしょう.
目標
- LINE DevelopersのMessaging APIを触って感覚を掴む,Herokuを使ってみる←今ここ
- push通知を実装してみる
- Herokuアドオンを使ってアプリを拡張してみる(データベースとスケジューラ)
開発環境
- LINE Developersのアカウント登録済み
- npm v6.4.1
- Heroku はアカウント登録済み
LINE Developersのプランに関して,Trial Freeというプランで解説している記事が多く見受けられましたが,2019年5月5日現在では,Trial Freeが廃止されフリープランというものに移行中らしいです(LINE Developer Trialプランの移行についてのご案内).
これによって,Messaging APIで毎月1,000通まで無料でプッシュメッセージを送信できるとのことなので,お試し勢にはありがたいプラン体制になったみたいです.
Webhookに関して,LINEでBotに関連するイベントが発生した場合に,そのイベントをBotインスタンスに通知してもらうためのアクセスポイント(URL)を設定する必要があります.このURLはSSL認証が必要となっているため注意が必要です.
作ったもの
上記の記事を参考に,挨拶をすればそれに対応する言葉を返してくれるbotを作りました(めっちゃ簡単ですみません).
コードを共有しておきますので参考になれば幸いです.今回主にいじったのはindex.js内のルーター制御の部分です(github)
// (中略)
// ルーター設定
server.post('/bot/webhook', line.middleware(line_config), (req, res, next) => {
res.sendStatus(200);
// すべてのイベント処理のプロミスを格納する配列。
let events_processed = [];
// イベントオブジェクトを順次処理。
req.body.events.forEach((event) => {
// この処理の対象をイベントタイプがメッセージで、かつ、テキストタイプだった場合に限定。
if (event.type == "message" && event.message.type == "text") {
let text = "「おはよう」「こんにちは」「こんばんは」と言うと反応するぜ";
switch (event.message.text) {
case 'おはよう':
text = "おはよう!!"
break;
case 'こんにちは':
text = "こんにちは!!"
break;
case 'こんばんは':
text = "こんばんは!!"
break;
}
// replyMessage()で返信し、そのプロミスをevents_processedに追加。
events_processed.push(bot.replyMessage(event.replyToken, {
type: "text",
text: text
}));
}
});
// すべてのイベント処理が終了したら何個のイベントが処理されたか出力。
Promise.all(events_processed).then(
(response) => {
console.log(`${response.length} event(s) processed.`);
}
);
});
感想
初めてLINE Developersを使用してみました.英語ですがドキュメントが充実しているのでとても簡単に作成することができました!!(LINE Developers Messaging API)
また,同時にHerokuにも初挑戦してみましたが,クッソ便利ですねこれ(笑)今まで自分のレンタルサーバでデプロイしたりして遊んでいたので設定とか大変でしたが(これはこれで勉強にはなる),gitにpushする感覚でデプロイができちゃうなんて...
Herokuには他にも色々な機能があるみたいなので調べて使ってみたいと思います!!(psqlやスケジューラなど)