4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS + LINE でモーニングコールするBotを作ってみた(スライド版)

Last updated at Posted at 2022-11-30
1 / 15

注意

この記事は「AWS EventBridge + Lambda + LINE でモーニングコールするBotを作ってみた 」のスライド版です。
スライドモードで閲覧することをお勧めします。


はじめに

「AWSを使って便利なチャットBotを作る」をテーマに掲げ、自分自身の勉強も兼ねて、その成果を記事にしています。
まず第1弾としてLINEにモーニングコールメッセージを送信するBotを作ってみました。
この記事が少しでも役に立てば嬉しいです。


完成イメージ

完成イメージは下図のような感じです。
毎朝6時にモーニングコールのメッセージを届けてくれます。

IMG_4A2D169908D7-1 2(中).png


システム構成

次のようなシステム構成でBotを作成していきます。

Chatbot-LineMoningCall.drawio.png


処理の流れ

  1. EventBridgeのスケジューラで毎朝決まった時間にメッセージ送信を行うLambda関数を呼び出す
  2. Lambda関数ではEventBridgeから指定されたメッセージをLIME Message APIを使用してLINEに送信する
  3. LINEで受信したメッセージが表示される

使用技術

今回のシステムで使用する主要な技術は以下のとおり

  • AWS Lambda
  • AWS EventBridge
  • LINE Messaging API
  • Node.js (v1.6)

作成手順

モーニングコールBotを以下のような流れで作成していきます。

  1. LINE Message APIの準備
  2. LINEにメッセージ送信するLambda関数の作成
  3. EventBridgeでLambda関数のcron設定

LINE Message APIの準備

LINE Botを作成するためにLINE Message APIを使用します。
APIを使用できるようにするためには以下の手順を行います。

  1. LINE Divelopersに個人アカウントを登録
  2. アカウント登録後、Console画面に移動し、プロバイダーを作成
  3. プロバイダー作成後、Message APIのチャンネルを新規作成
  4. 「チャネル基本設定」でユーザー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を設定します。

index.js
// 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関数を呼び出す設定します。

  1. AWSマネージメントコンソールから「EventBridge」を選択
  2. Schedulerの「スケジュール」を選択し、「スケジュール追加」を押下
  3. スケジュールを作成(今回は朝6時にモーニングコール)
  4. スケジュールのパターンは「定期的なスケジュール」「cronベースのスケジュール」

  1. cron式は (0, 6, *, *, ?, *)、フレックスタイムは「なし」、時間枠は「Asia/Tokyo」
  2. ターゲットは「AWS Lambda Invoke」
  3. Lambda 関数は今回作成したLambda関数を選択、入力は後述するJSONフォーマットを参照
  4. スケジュールの状態は「有効化」オン
  5. アクセス許可は「このスケジュールの新しいロールを作成」を選択

JSONフォーマット

送信するメッセージをJSON形式で記述します。
メッセージの仕様は公式ドキュメントで確認できます。

{
  "type": "text",
  "text": "おはようございます!\n今日も頑張っていきましょう!"
}

最後に

以上でBotの作成は完了です。
成功すれば毎朝6時にモーニングコールが届きます。
時間とメッセージを変更しておやすみコールにしてもいいですし、誕生日にバースデーメッセージを届けてもいいです。
カスタマイズしてBotを自分色に染めてください。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?