Posted at

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

More than 3 years have passed since last update.

Azure App Serviceの無料プラン(F1)を使用して、オウム返しをするBOTを作成しましょう。

Azure App Serviceは、自動で割り当てられるドメイン名でhttpsの利用が可能です。

Azure App Serviceは様々な言語でプログラミングできますが、今回はPHPを使用します。


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

※Trial Bot Accountの受付は終了したようです

アカウント取得してはみたけどまだ使っていないという方、とりあえず作ってみましょう。

こちらなどを参考に作成します。


  • Channel ID

  • Channel Secret

  • MID

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


Azure App Service側の準備


F1のインスタンスを作成する


App Serviceの設定画面を開き「新規作成」をクリック

Screen Shot 2016-04-15 at 5.26.46 PM.png


アプリ名、リソースグループを設定

アプリ名がURLの一部になります。

Screen Shot 2016-04-15 at 5.27.51 PM.png


プランの選択

F1プラン(無料のインスタンスタイプ)を選択

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


Line Bot AccountのWhiteListに設定するIPアドレスの確認

プロパティの「送信IPアドレス」に表示されるIPアドレスを、Line Bot AccountのWhiteListに設定します。

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


PHP アプリケーションの準備

専用のライブラリがあるので、それをcomposerでインストールします。

componser require oh-sky/line-trialbot

オウム返しをするプログラムは下記のように作成できます。

getenvの引数はAzure App Serviceの環境変数設定で入力した環境変数名

にしてください。


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

Server IP Whitelistに設定する値は、Azure App Serviceの送信IPアドレスの第四オクテットを0にして、マスク長を24にすればとりあえず動きます。

Screen Shot 2016-04-16 at 4.44.40 PM.png

以上の設定で、オウム返しBotが動きます。

簡単ですね。

Screen Shot 2016-04-16 at 4.50.09 PM.png

今回使用したライブラリは、テキスト以外にも画像・動画・音声・位置情報・スタンプの送信にも対応しています。

とりあえずアカウントを作成したけどまだ使っていないというそこのあなた、使ってみてはいかがでしょうか。