#目的
目的は,LINEでオウム返しをするBOTを作ること.
※当方はPHPを含め初心者であるため,内容についてのミス等あればぜひご指摘頂きたいです.
#作成したBOTとリポジトリ
こちらから友達追加ができます.
https://lin.ee/eNVEud5
Githubのリポジトリ:https://github.com/rintaro9147/linebot20200328
#準備
- herokuの登録!
- LINE BOTの登録!プロバイダーを作成し,Messaging APIのチャネルを作る.詳しくは後述.
- phpとcomposerをインストール!(このへんは省略)
- 正常にインストールできたか,バージョンの確認をする.
heroku -v
php -v
composer -v
composerは,ヘルプとともにでかでかとCOMPOSERと表示されます.
また,gitのアカウントは登録しているものとして進めます.
#オウム返しのphpの準備
アカウントを登録後,ubuntsuでログインします.コマンドを打つとブラウザに遷移するので,ログインボタンをポチる.
$ heroku login
次にherokuのアプリケーションを作ります.適当なアプリ名をつけてください.使えない場合,エラーとなるので,ほかのものを試してください.
heroku create <アプリ名>
Creating <アプリ名>... done
https://<アプリ名>.herokuapp.com/ | https://git.heroku.com/<アプリ名>.git
以下のコマンドを順に打ってください.フォルダ,phpファイルを作成して,とりあえずデプロイしておきます.
$ mkdir linebot
$ cd linebot
$ touch index.php
$ git init
$ git commit -m "make it better"
$ git push heroku master
続いて,composerでLINE-BOT-SDKを導入していきます.
$ composer require linecorp/line-bot-sdk
これでls
コマンドを打つと,中にvenderファイルなどができると思います.
次はLINE BOTの設定です!こっちはそこまで難しくありません!
#LINE BOTの設定
ここからコンソール画面にアクセスし,作ったプロバイダとチャネルをクリックしていくと,この画面にたどり着きます.
###チャネルシークレットの発行
その画面の下のほうに,チャネルシークレットとあるので,横の発行ボタンを押して,テキストファイルか何かにコピペして控えておきましょう.
###アクセストークンの発行
次に,「Messaging API設定」タブに移動し,一番下のチャネルアクセストークンを発行します.同様に控えましょう.
###アカウント機能の編集
次に,すぐ上のアカウント機能の編集を行います.下2つのどちらかの編集をクリックします.
そうしたら,以下のようにしてください.
###Webhookの設定
最後にすぐうえにあるwebhook設定です.https://<アプリ名>.herokuapp.com/index.php
と入力します.index.php
の部分はなくても良し.webhookの利用をONにして,検証ボタンを押してください.成功と表示されたらOKです.
そのページにあるQRで自分のスマホで友達追加をしておきましょう.
LINE側の設定は以上です.
#phpファイルの記述
<?php
require_once __DIR__ . '/vendor/autoload.php';
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient(getenv('CHANNEL_ACCESS_TOKEN'));
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => getenv('CHANNEL_SECRET')]);
$sign = $_SERVER["HTTP_" . \LINE\LINEBot\Constant\HTTPHeader::LINE_SIGNATURE];
$events = $bot->parseEventRequest(file_get_contents('php://input'), $sign);
foreach ($events as $event) {
if (!($event instanceof \LINE\LINEBot\Event\MessageEvent) ||
!($event instanceof \LINE\LINEBot\Event\MessageEvent\TextMessage)) {
continue;
}
$bot->replyText($event->getReplyToken(), $event->getText());
}
記述したら,前と同じ方法でデプロイしましょう.
#環境変数の設定
最後に控えておいたアクセストークンとアクセスシークレットの設定です.これをやらないとherokuとLINEがやり取りできません.cmdを開いて,以下のコマンドを入力してください.
$heroku config:set CHANNEL_ACCESS_TOKEN="控えたアクセストークンをコピペ" -a <アプリ名>
$heroku config:set CHANNEL_SECRET="控えたチャネルシークレット" -a <アプリ名>
$heroku config
最後のコマンドで正しく入力されたか確認してください.
#参考にした記事
参考にしたQiita記事をここに記します.感謝いたします.
#結果
目的通り,オウム返しするbotを作ることができました!
#考察
- 最初だけオウム返しが遅い → 解明中
- git add .をしたとき,
warning: LF will be replaced by CRLF in
がたくさん出た.→ここで解決した.ありがとうございます. - 先にindex.phpの中身を書いてデプロイすると,webhookの検証でエラーがでる.→空もしくはhello worldくらいのphpファイルを先にデプロイして検証すると,上手くいった.そのあとにindex.phpの中身を書く.先に中身を書いてしまうことが問題なのではなく,今回たまたまであって,ほかに要因がありそう.
#最後に
初めてLINE BOTを作成したが,なんだかんだ作ることができてよかったです.また,Qiita記事も初めての投稿なので,また一つ経験ができたので,今後も書いていきたいと思います.重ねて記事に不備等があれば,編集リクエストお願いします.