マイクロソフトが提供しているAzureというPaasがあります
学生なら無料でWebAppを利用することができます
せっかくなのでLineBot作りたいなーと思いAzureにLineBotの設定をしたのですが、色々手こずったので残しておきます
前提として”AzureのWebApp”と”Lineデベロッパー”の取得済み”で進めていきます
AzureとLineの連携
AzureとLineを連携するためにAzureのURLと送信IPアドレスを取得します
Azureのダッシュボードを開きます
プロパテイタブにあるURLを取得します
URLの末尾に”:443/“をつけてテキストエディタ等に保存しておいてください
EX:
before:http://hogehoge.azurewebsites.net
after:http://hogehoge.azurewebsites.net:443/
同じくプロパティタブにある送信用アドレスを取得します
”,“のところで改行してどこかに保存しておいてください
EX:
before:11.111.11.111,22.22.222.22,33.33.33.33,44.44.44.444,55.55.55.55
after:
11.111.11.111 22.22.222.22 33.33.33.33 44.44.44.444 55.55.55.55
上記で取得したURLと送信用IPアドレスをLineBotへ入力します
LineDeveloperを開きMessaging APIを選択してください
Basic informationタブに移動し、Editを選択肢編集をします
Webhook URLにURを入力し保存してください
Server IP Whitelistタブに移動し送信IPを追加してください
numericは24で良いと思います
LineBotの設定をする
デフォルトではメッセージの自動送信をしてありがた迷惑な機能が備わっています
それをOFFにする等々をしていきます
LINE@MANAGERを開きます
余談ですがここでアイコンの設定等々できるので色々といじってみてください
重要なのはMessaging API設定です
Messaging APIをタブを開きます
- Webhook送信:利用する(必須)
- Botのグループトーク参加:利用しない(お好みで)
- 自動応答メッセージ:利用しない(必須)
- 友だち追加時あいさつ:利用しない(お好みで)
として最後に保存をしてください
LineBotプログラム
やっとプログラム作成に移ります
その前にLineBotのアクセストークンを取得してきます
LineDeveloperを開きMessaging APIを選択してください
Basic informationタブに移動しトークンを取得します
プログラム内にトークンを書いても動作はしますが、セキュリティ上かなり危険です
Azureに変数として登録しておきます
Azureに戻り、アプリケーション設定を開きます
アプリ設定にて先程取得したトークンのコピペ及び適当なは変数名(ここではLINE_BOT_TOKEN)を記述してください
スロット設定にチェックをいれておきます
保存を忘れずに
LineBotのプログラムを下記に記述します
解説は別の記事にまとめると思います(多分)
とりあえず下記のプログラムをコピペしてmain.phpと保存してください
送信されたテキストをオウム返し、テキスト以外のものがきたらエラーメッセージ的なものを送信するプログラムです
<?php
$line_accessToken = getenv('LINE_BOT_TOKEN');
$json_string = file_get_contents('php://input');
$jsonObj = json_decode($json_string);
$replyToken = $jsonObj->{"events"}[0]->{"replyToken"};
$messageId = $jsonObj->{"events"}[0]->{"message"}->{"id"};
$message_type = $jsonObj->{"events"}[0]->{"message"}->{"type"};
$message_recv = $json_object->{"events"}[0]->{"message"}->{"text"};
$message = "";
if($message_type == "text"){
$message = $message_recv;
}else{
$message = "申し訳ありません。テキストのみをいれてください";
}
send_message($replyToken, $line_accessToken, $message);
?>
<?php
//メッセージの送信
function send_message($replyToken, $line_accessToken, $message){
$response_format_text = [
"type" => "text",
"text" => $message
];
$post_data = [
"replyToken" => $replyToken,
"messages" => [$response_format_text]
];
$ch = curl_init("http://api.line.me/v2/bot/message/reply");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charser=UTF-8',
'Authorization: Bearer ' .$line_accessToken
));
$result = curl_exec($ch);
curl_close($ch);
}
?>
プログラムをAzureへデプロイ
作ったプログラムをAzureを送信します
デプロイオプションタブでGitやGitHub、DropBox等々でデプロイできます
しかし、更新にめっちゃ時間がかかるためFTPでアップロードすることをおすすめします
概要タブから上部にある発光プロファイルの取得を選択します
ファイルをダウンロードし中身にFTPに接続するためのあれこれが書いてあります
- publishUrl 接続先
- userName ユーザー名
- userPWD パスワード
接続したら、site/wwwroot ディレクトリに移動し、割くほど作成たプログラムをアップロードしてください
最後にもう一手間
あともう一手間加えます
このままだとmain.phpを呼び出してくれません
Azureのアプリケーション設定タブにある既定ドキュメントにmain.phpを入力してください(ここかなり引っかかりました)
AzureとWatsonを利用して画像認識Botを作ってみたのでぜひためしてみてください