LINEBOTSDK-PHPを使ってLINEBOTを作成する。

LINEBOTをPHPで作成しましょう。
現在、LINEBOTのリファレンスは少し難しく書いてあります。
特にLINEBOTSDKは英語で書いてありますし、オブジェクト指向とcomposerの知識が必要です。
そのためLINEBOTSDKを使って、メッセージの返信するまでを記事にしました。

# 公式リファレンス
LINEBOT公式リファレンス
https://devdocs.line.me/ja/

LINEBOTSDK(PHPバージョン)
https://github.com/line/line-bot-sdk-php

# 必要なもの
・サーバー
・ドメイン
・LINEBOTアカウント

# BOTを登録する
https://business.line.me/ja/services/bot
<img width="712" alt="スクリーンショット 2016-11-22 10.36.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/89992/c9edb7b4-5f12-bcdb-def4-c9bd4cdda8e2.png">


# 返信用PHPを作成する
まずは、LINEBOTに送られたメッセージに返信するPHPを作りましょう。

最初にディレクトリを作成してください。
今回は、linebotというディレクトリにしました。
<pre><code>mkdir linebot</code></pre>
ターミナルでlinebotフォルダの中に移動
<pre><code>cd linebot</code></pre>
下のコマンドを実行する。
<pre><code>composer require linecorp/line-bot-sdk</code></pre>
実行するとvendorフォルダが作成される。
vendorの中にautoload.phpがあるので、LINEBOTSDKを使うにはこれを読み込む。

index.phpファイルを作成する。<pre><code>vim index.php</code></pre>index.phpに下のコードを貼り付ける。<pre><code><?php
DEFINE("ACCESS_TOKEN","ここにアクセストークン");
DEFINE("SECRET_TOKEN","ここにシークレットトークン");

use \LINE\LINEBot\HTTPClient\CurlHTTPClient;
use \LINE\LINEBot;
use LINE\LINEBot\MessageBuilder\TextMessageBuilder;
use LINE\LINEBot\MessageBuilder\MultiMessageBuilder;
use \LINE\LINEBot\Constant\HTTPHeader;

//LINESDKの読み込み
require_once(\_\_DIR\_\_."/vendor/autoload.php");

//LINEから送られてきたらtrueになる
if(isset($\_SERVER["HTTP_".HTTPHeader::LINE_SIGNATURE])){

//LINEBOTにPOSTで送られてきた生データの取得
  $inputData = file_get_contents("php://input");

//LINEBOTSDKの設定
  $httpClient = new CurlHTTPClient(ACCESS_TOKEN);
  $Bot = new LINEBot($HttpClient, ['channelSecret' => SECRET_TOKEN]);
  $signature = $\_SERVER["HTTP_".HTTPHeader::LINE_SIGNATURE]; 
  $Events = $Bot->parseEventRequest($InputData, $Signature);

  //大量にメッセージが送られると複数分のデータが同時に送られてくるため、foreachをしている。
　　　　foreach($Events as $event){
    $SendMessage = new MultiMessageBuilder();
    $TextMessageBuilder = new TextMessageBuilder("よろぽん！");
    $SendMessage->add($TextMessageBuilder);
    $Bot->replyMessage($event->getReplyToken(), $SendMessage);
  }
}</code></pre>これでHelloworldが完成しました！

このlinebotフォルダを、サーバーにアップロードしましょう。

# LINE側の設定
https://admin-official.line.me/
ここのアカウントを選択して、「アカウント設定」=>「BOT設定」まで行ってサーバからファイルを実行させるように設定します。
<img width="672" alt="スクリーンショット 2016-11-22 9.59.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/89992/fe12ff41-eaa2-18d4-78a2-39a388f90cb6.png">

## LINE Developersページへ移動
LINE Developersで設定するを押してください。
<img width="571" alt="スクリーンショット 2016-11-22 16.09.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/89992/d988ef6a-c4a4-e6d8-2d17-1dce44d88b45.png">

## シークレットトークンの場所
channnel secret をSHOWボタンを押して取得しましょう。
発見したらindex.phpのファイルに記入しましょう。
<pre><code><?php
DEFINE("SECRET_TOKEN","ここにシークレットトークン");
</code></pre>
## アクセストークンの場所
channnel access tokenの欄に書いてあります。(自分のが写ってしまってるので左の欄だけの画像)
発見したらindex.phpのファイルに記入しましょう。
<pre><code><?php
DEFINE("ACCESS_TOKEN","ここにアクセストークン");
</code></pre><img width="244" alt="スクリーンショット 2016-11-22 10.24.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/89992/341d8e7d-7f24-7041-cf31-491eedf884f5.png">

## 返信用サーバーURLの設定
ここに先ほどのindex.phpをアップロードしたサーバを指定しましょう。(https://domain.com/index.phpなど)
<img width="767" alt="スクリーンショット 2016-11-22 10.09.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/89992/ca2b04b6-6d63-a909-4cda-c3ca79fd92a1.png">
これで完了です！

LINEBOTを登録してメッセージを送信してみてください。

# 参考URL
「オートロードと名前空間について」SDKを読み解くのに必要です。
http://qiita.com/atwata/items/5ba72d3d881a81227c2a
基本的にほとんどのURLはHTTPS通信で扱う仕様になっています。