- メッセージを受信するとLambdaが呼び出される
- Lambdaは「Your message is 送信メッセージ」と返却する
- 受信メッセージと返却メッセージをDynamoDBに格納
- 画像を受信した場合にS3に画像を保管
- 受信メッセージを元に何かしらの処理を行う
利用サービスおよびRubyの説明は割愛しています。
必要でしたら別途説明しますので、遠慮なく質問してください。
- 身近なアプリをHackして楽しんでほしい
- サーバレスを体験してほしい
- Cloud9便利ってのを感じてほしい
- AWSアカウント
- 無料枠で完結
- LINEアカウント
- 無料
- S3
- Cloud9
- CloudFormation(SAM)
- Lambda
- ApiGateway
- MessagingApi
LINEアカウントをお持ちの場合は登録がスムーズに進められます。
- こちらのサイトでアカウント登録を行なってください。
- LINEdevelopersプロバイダー一覧で「新規プロバイダー作成」をクリックします。
- プロバイダー名を入力して、「確認する」をクリックします。
- 「作成する」をクリックします。
- プロバイダーが作成できます。
- Messaging APIの「チャネル作成する」をクリックします。
- 以下の内容を入力して、「入力内容を確認する」をクリックします。
項目名 | 入力値 |
---|---|
アプリ名 | OSC-JAWS |
アプリ説明 | LINE bot |
大業種 | 個人 |
小業種 | 個人(その他) |
メールアドレス | osc-jaws@example.com |
- 情報利用に関する同意についてが表示されるので、「同意する」をクリックします。
- 利用規約2箇所にチェックを入れて、「作成」をクリックします。
- Messaging API用のチャネルが作成できます。
チャネル設定 (参考サイト)
自動応答を無効化していない場合は、Botとして返信することができません。
- 使用するチャネルをクリックします。
- LINE@機能の利用までスクロールして、自動応答メッセージの「設定はこちら」をクリックします。
- 別タブで応答設定が表示されるので、詳細設定の応答メッセージ:オフを選択して更新します。
Bot開発でアクセストークンも必要な情報なので事前に発行します。
- 使用するチャネルをクリックします。
- メッセージ送受信設定までスクロールして、アクセストークンの「再発行」をクリックします。
- 失効までの時間に0時間後を選択して、「再発行」をクリックします。
- アクセストークンの発行が完了します。
以下の手順で友達登録用のQRコードが表示されます。
スマホにインストールされているLINEのQRコードリーダーで友達登録できます。
- 友達登録するチャネルをクリックします。
- Bot情報までスクロールして、LINEアプリへのQRコードが確認できます。
バケット名を「jaws-osc-kado」としています。
画面右上のリージョンが「東京」である必要があります。
- 「s3」と入力して、サービスを検索します。
- 「バケットを作成する」をクリックします。
- バケット名とリージョン(東京)を入力して、「作成」をクリックします。
- バケットが作成できます。
今回のハンズオンは開発環境をクラウドに作成します。
EnviromentNameを「jaws-osc-kado」としています。
画面右上のリージョンが「東京」である必要があります。
- 「cloud9」と入力して、サービスを検索します。
- 「Create enviroment」をクリックします。
- Nameを入力して、「Next step」をクリックします。
- 初期値を変更せずに、「Next step」をクリックします。
- 確認画面が表示されるので、「Create enviroment」をクリックします。
- 1分程度待つことで以下のような画面が表示されて開発環境が作成できます。
元々インストールされているRubyとSAMのバージョンを変更します。
こちらのサイトを参考に行なってください。
6. GitHubからソースを取得
以下のコマンドでソースを取得します。
- 今回必要なファイルになります。
- function.rb (LineBotが呼び出す処理)
- Gemfile (開発で必要なライブラリ定義)
- template.yaml (AWSに自動構築する設計図)
$ git clone https://github.com/gitkado/jaws-lambda-linebot.git
Lambdaで標準以外のGem(ライブラリ)を使用する場合は、
GemのソースをLambdaに含める必要があります。
以下の手順でGemのソースを取得します。
$ cd jaws-lambda-linebot
$ bundle install
$ bundle install --deployment
「LINE MessagingApiを登録」
で登録したMessagingApiを確認します。
teplate.yamlに確認した値をセットします。
- 使用するチャネルをクリックします。
- 基本情報までスクロールして、Channel ID, Channel Secretを確認します。
- メッセージ送受信設定までスクロールして、アクセストークンを確認します。
- template.yamlの 【LINE Developersから取得】 を修正して保存します。
# template.yaml(17行目~)
LINE_CHANNEL_ID: 【LINE Developersから取得】
LINE_CHANNEL_SECRET: 【LINE Developersから取得】
LINE_CHANNEL_TOKEN: 【LINE Developersから取得】
【バケット名】 は、「S3バケットを作成」
で作成したバケット名に置き換える必要があります。
以下のコマンドをそれぞれ実行してLambdaとApiGatewayを作成します。
$ sam package \
--template-file template.yaml \
--s3-bucket 【バケット名】 \
--output-template-file packaged-template.yaml \
--region ap-northeast-1
$ sam deploy \
--template-file packaged-template.yaml \
--stack-name cfn-lambda-linebot \
--capabilities CAPABILITY_IAM
東京リージョンのリソース表示を行うURLになっています。
- 以下のリソースが作成されていることを確認してください。
「LINE MessagingApiを登録」
でQRコードから登録したLINEアカウントにメッセージを送信して試してみてください。