LINE BOTとAWS LambdaとAPI Gatewayを使って「オウム返しBOT」を作る。
はじめに
LineのBOT APIとAWSのAPI Gateway、Lambdaを利用してLINE botを作りたいと思います。
まず、以下がLINEのBOT APIドキュメントの図です。
出典:LINE developers
ここでの「YOUR SYSTEM」というところを「Lambda」と「API Gateway」を使って構築します。
また、今回必要となるLINE BOT API Trial Accountの取得方法については割愛します。
# Lambda関数の作成 それではまず、AWSの管理コンソールから「Lambda」のサービスへ移動します。
## ● Create a Lambda function 次に「Create a Lambda function」をクリックします。 
## ● Select blue print ここではとりあえず何も選択せず「Next」をクリックします。 
## ● Configure triggers 今のままだとLambdaだけの状態なのでフロントに「API Gateway」を配置します。 
「API Gateway」を配置したらその設定をここで行いますが、API nameとResource nameは任意の名前を設定して大丈夫です。今回は「MyAmore」と「/myamore」にしています。
そしてMethodは「POST」を選択し、Deploymment stageは「prod(デフォルト)」のままで、Securityは「Open」にしておきます。
入力が完了したら「Next」ボタンをクリックします。

## ● Configure function それでは関数の設定に移ります。
### - Configure function **Name**と**Description**に任意の内容を入力します。また**Runtime**はここでは「_Node.js 4.3_」を選択します。 
### - Lambda function code ここはとりあえずこのままにしておきます。

### - Lambda function handler and role **Handler**に「_index.handler_」、**Role**は「_Choose an existing role_」を選び**Existing role**に「_lambda_basic_execution_」を指定します。 
### - Advanced settings 今回はあまり使う予定はないので**Memory(MB)**は「_128_」にしておきます。 **Timeout**はデフォルトの「_3秒_」です。 また、**VPC**は「_No VPC_」にしておきます。 
## ● Review 「Configure function」で設定した内容の確認です。 問題なさそうなら[Create function]で作成完了です。  
作成が完了すると「API Gateway」のURLが表示されます。

ここで表示されたURLをLINEの「Callback URL」に設定します。
その際に注意が必要なのが、ポート番号も指定してあげなければならないという点です。
以下の画像のように、ドメイン末尾に「:443」をつけてあげる必要があります。

以上で「YOUR SYSTEM」に該当するフレームが完了しました。
# Lambda関数の設定 それでは作成したフレームの中身を設定していきます。 中身というのは先ほど「とりあえずこのまま」にしていたLambda関数の箇所です。 「Code」タブをクリックして編集画面を表示します。 
そこに以下のソースコードをコピペします。
var https = require('https');
exports.handler = function(event, context) {
console.log('EVENT:', JSON.stringify(event, null, 0));
var msg = event.result[0];
var data = JSON.stringify({
to: [msg.content.from.toString()],
toChannel: 1383378250,
eventType: "138311608800106203",
content: msg.content
});
var url ='https://trialbot-api.line.me/v1/events';
var opts = {
host: 'trialbot-api.line.me',
path: '/v1/events',
headers: {
"Content-type": "application/json; charset=UTF-8",
"X-Line-ChannelID": "【Channel ID】",
"X-Line-ChannelSecret": "【Channel Secret】",
"X-Line-Trusted-User-With-ACL": "【MID】"
},
method: 'POST'
};
var req = https.request(opts, function(res){
res.on('data', function (chunk) {
console.log(res.statusCode + chunk.toString());
});
req.on('error', function(err) {
console.log('ERROR: ' + err.message);
});
});
req.write(data);
req.end();
};
ただその際に、【Channel ID】と【Channel Secret】と【MID】は独自の値を設定する必要があるので「Line developers」で取得した自分の値と置き換えてください。

コピペが完了したら「Save」ボタンで保存して完了です。
え?それじゃ何をしてるのかわからないって?いいんです!まずは完成させることが大事なんです! ひとまず何も考えずにコピペしましょう!
# トーク それではいよいよ会話です。ProudCloudに話しかけてみます。 
同じ言葉を返してくれます。いわゆる「オウム返し」というやつです。
# おわりに 今回は「とにかく動かす」ことを目的に作りました。 具体的な処理について説明すると長くなってしまうので、今回はここまでにしたいと思います。