
LINEBOT開発 その4(プログラミング)
node.jsを使ってLineBotのプログラミングを説明して行く。
環境構築が終わり、プロジェクト作成を終えたのでやっとプログラミングを行なっていく。
今回は説明のため単純なLineBotサンプルを作成する。
1 . メインファイル(index.js)を作成する。
$ vi index.js
2 . メインファイルにプログラミングする。
・使用するモジュールのインポート
・LineAPIを利用するための各種パラメータを設定
・APIを投げるクライアントを作成
・建てるサーバの設定
・実際にリクエストが来た際の処理を定義
・先にレスポンスステータスを200として返しておく
・送られて来たイベントを各々処理
・イベントの型を指定して、そのイベントが来た際の処理を記載する
・応答のイベントとして返したいイベント内容を定義して、イベント処理プロミスに詰める
・応答イベントを送る
ざっくりと説明すると上記のような内容を定義する。
下記、サンプル(文字が送られてきたら、「Hello」と返すBot)
// moduleインポート
const server = require("express")();
const line = require("@line/bot-sdk");
const request = require('request');
// パラメータ設定
const line_config = {
channelAccessToken: 'LineDeveloperで取得したアクセストークン値',
channelSecret: 'LineDeveloperで取得したChannel Secret値'
// 環境変数に設定しているアクセストークンをセット
// channelAccessToken: process.env.LINE_ACCESS_TOKEN,
// 環境変数に設定しているChannel Secretをセット
// channelSecret: process.env.LINE_CHANNEL_SECRET
};
// APIクライアント作成
const bot = new line.Client(line_config);
// サーバー設定
server.listen(process.env.PORT || 3000);
server.post('/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"){
events_processed.push(bot.replyMessage(event.replyToken, {
type: "text",
text: "Hello"
}));
}
});
// イベント処理終了後、イベント数を出力。
Promise.all(events_processed).then(
(response) => {
console.log(`${response.length} event(s) processed.`);
}
);
});
サンプルの形まで作成できたら、
あとはこのプロジェクトファイルをサーバーにあげて稼働させれば
LineBotとして機能する。
“LINEBOT開発 その4(プログラミング)” への2件の返信