【基本無料】Azure App ServiceでLINE BOTを簡単に構築


Azure App Serviceの無料プラン(F1)を使用して、オウム返しをするBOTを作成しましょう。
Azure App Serviceは、自動で割り当てられるドメイン名でhttpsの利用が可能です。
Azure App Serviceは様々な言語でプログラミングできますが、今回はPHPを使用します。

# LINE BOTのアカウントを作成する

**※Trial Bot Accountの受付は終了したようです**
**アカウント取得してはみたけどまだ使っていないという方、とりあえず作ってみましょう。**

[こちら](http://qiita.com/Yuki_BB3/items/5c18073181b5eea94164)などを参考に作成します。

- Channel ID
- Channel Secret
- MID

これらの値は次の手順で使用します

# Azure App Service側の準備

## F1のインスタンスを作成する
#### App Serviceの設定画面を開き「新規作成」をクリック
![Screen Shot 2016-04-15 at 5.26.46 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/77805d1d-4615-b644-9060-69a0aeccd441.png "Screen Shot 2016-04-15 at 5.26.46 PM.png")

#### アプリ名、リソースグループを設定
アプリ名がURLの一部になります。
![Screen Shot 2016-04-15 at 5.27.51 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/bbf77255-f2ce-7103-0e13-4f6713f16fcd.png "Screen Shot 2016-04-15 at 5.27.51 PM.png")

#### プランの選択
F1プラン(無料のインスタンスタイプ)を選択
![Screen Shot 2016-04-15 at 5.27.06 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/8cf1fec2-cdbe-dc6f-1d23-00685830ae33.png "Screen Shot 2016-04-15 at 5.27.06 PM.png")

#### 環境変数の設定
LINE Trial Bot Account作成時に割り当てられたChannelID, ChannelSecret, MIDを環境変数に設定します。
![Screen Shot 2016-04-15 at 8.52.08 AM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/e6878607-9802-b570-fbc4-386daea165ba.png "Screen Shot 2016-04-15 at 8.52.08 AM.png")

### Line Bot AccountのWhiteListに設定するIPアドレスの確認
プロパティの「送信IPアドレス」に表示されるIPアドレスを、Line Bot AccountのWhiteListに設定します。
![Screen Shot 2016-04-15 at 8.53.02 AM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/cd13b34e-97a6-c4f1-3768-751fea2a905f.png "Screen Shot 2016-04-15 at 8.53.02 AM.png")

### URLの確認
Line Bot Accountのcallback URLに設定するURLを確認します。
![Screen Shot 2016-04-15 at 8.54.09 AM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/d06f274d-2fcb-2784-e770-da2ca0415655.png "Screen Shot 2016-04-15 at 8.54.09 AM.png")


# PHP アプリケーションの準備
専用のライブラリがあるので、それをcomposerでインストールします。

```bash:
componser require oh-sky/line-trialbot
```

オウム返しをするプログラムは下記のように作成できます。
getenvの引数はAzure App Serviceの環境変数設定で入力した環境変数名
にしてください。

```php:index.php
<?php
namespace Foo;

include 'vendor/autoload.php';

use OhSky\LineTrialBot\Sender;
use OhSky\LineTrialBot\RequestHandler;

$sender = new Sender(
    getenv('LINE_CHANNEL_ID'),
    getenv('LINE_CHANNEL_SECRET'),
    getenv('LINE_MID'),
    ['verify' => false]
);

$requestBodyJson = file_get_contents('php://input');
$eventList = RequestHandler::getEventList($requestBodyJson);

foreach ($eventList as $event) {
    $sender->sendText(
        [$event->content->from],
        $event->content->text
    );
}
```

これをGitなりFTPなりで、Azure App Serviceに配置します。

# LINE Trial Bot Accountにcallback URLとServer IP Whitelistを設定
![Screen Shot 2016-04-16 at 4.42.49 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/b0bbe51f-dd08-e01b-d687-e73ef80d31aa.png "Screen Shot 2016-04-16 at 4.42.49 PM.png")

Server IP Whitelistに設定する値は、Azure App Serviceの送信IPアドレスの第四オクテットを0にして、マスク長を24にすればとりあえず動きます。
![Screen Shot 2016-04-16 at 4.44.40 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/aaf916c3-c404-1124-27da-922dfc3ce788.png "Screen Shot 2016-04-16 at 4.44.40 PM.png")

以上の設定で、オウム返しBotが動きます。
簡単ですね。
![Screen Shot 2016-04-16 at 4.50.09 PM.png](https://qiita-image-store.s3.amazonaws.com/0/13038/067efbf1-6a05-0cb1-4ecb-3f87d4c1db6f.png "Screen Shot 2016-04-16 at 4.50.09 PM.png")

今回使用したライブラリは、テキスト以外にも画像・動画・音声・位置情報・スタンプの送信にも対応しています。
とりあえずアカウントを作成したけどまだ使っていないというそこのあなた、使ってみてはいかがでしょうか。