注意
この記事は「AWS EventBridge + Lambda + LINE でモーニングコールするBotを作ってみた 」のスライド版です。
スライドモードで閲覧することをお勧めします。
はじめに
「AWSを使って便利なチャットBotを作る」をテーマに掲げ、自分自身の勉強も兼ねて、その成果を記事にしています。
まず第1弾としてLINEにモーニングコールメッセージを送信するBotを作ってみました。
この記事が少しでも役に立てば嬉しいです。
完成イメージ
完成イメージは下図のような感じです。
毎朝6時にモーニングコールのメッセージを届けてくれます。
システム構成
次のようなシステム構成でBotを作成していきます。
処理の流れ
- EventBridgeのスケジューラで毎朝決まった時間にメッセージ送信を行うLambda関数を呼び出す
- Lambda関数ではEventBridgeから指定されたメッセージをLIME Message APIを使用してLINEに送信する
- LINEで受信したメッセージが表示される
使用技術
今回のシステムで使用する主要な技術は以下のとおり
- AWS Lambda
- AWS EventBridge
- LINE Messaging API
- Node.js (v1.6)
作成手順
モーニングコールBotを以下のような流れで作成していきます。
- LINE Message APIの準備
- LINEにメッセージ送信するLambda関数の作成
- EventBridgeでLambda関数のcron設定
LINE Message APIの準備
LINE Botを作成するためにLINE Message APIを使用します。
APIを使用できるようにするためには以下の手順を行います。
- LINE Divelopersに個人アカウントを登録
- アカウント登録後、Console画面に移動し、プロバイダーを作成
- プロバイダー作成後、Message APIのチャンネルを新規作成
- 「チャネル基本設定」でユーザーID、「Message API設定」でチャネルアクセストークンを取得
LINEにメッセージを送信するLambda関数の作成
作業用のディレクトリを作成し、その中でnpm init
コマンドで実行します。
色々聞かれますがとりあえず全部デフォルトで進めます。
$ npm init
@line/bot-sdkパッケージをインストールします。
$ npm install @line/bot-sdk
Lambda関数を作っていきます。
index.jsファイルを作成し、以下のコードを記述します。<LINE_ACCESS_TOKEN>
と<LINE_USER_ID>
にはLINE Developersで取得したチャネルアクセストークンとユーザーIDを設定します。
// LINE BOT SDKを用意する
const LINE = require('@line/bot-sdk');
/**
* LINEメッセージ送信Lambda関数
* @param {*} event
* @returns
*/
exports.handler = async (event) => {
// アクセストークンとユーザーIDを設定する
const LINE_ACCESS_TOKEN = '<LINE_ACCESS_TOKEN>';
const LINE_USER_ID = '<LINE_USER_ID>';
// LINEへの送信クライアントを用意する
const client = new LINE.Client({
channelAccessToken: LINE_ACCESS_TOKEN
});
// 引数eventをmessageに詰めて送信する
const message = event;
await client.pushMessage(LINE_USER_ID, message);
};
EventBridgeでLambda関数のcron設定
EventBridge Schedulerで定期的にLambda関数を呼び出す設定します。
- AWSマネージメントコンソールから「EventBridge」を選択
- Schedulerの「スケジュール」を選択し、「スケジュール追加」を押下
- スケジュールを作成(今回は朝6時にモーニングコール)
- スケジュールのパターンは「定期的なスケジュール」「cronベースのスケジュール」
- cron式は (0, 6, *, *, ?, *)、フレックスタイムは「なし」、時間枠は「Asia/Tokyo」
- ターゲットは「AWS Lambda Invoke」
- Lambda 関数は今回作成したLambda関数を選択、入力は後述するJSONフォーマットを参照
- スケジュールの状態は「有効化」オン
- アクセス許可は「このスケジュールの新しいロールを作成」を選択
JSONフォーマット
送信するメッセージをJSON形式で記述します。
メッセージの仕様は公式ドキュメントで確認できます。
{
"type": "text",
"text": "おはようございます!\n今日も頑張っていきましょう!"
}
最後に
以上でBotの作成は完了です。
成功すれば毎朝6時にモーニングコールが届きます。
時間とメッセージを変更しておやすみコールにしてもいいですし、誕生日にバースデーメッセージを届けてもいいです。
カスタマイズしてBotを自分色に染めてください。