LINEのMessaging APIを使って簡単なボットを作成してみます。
アカウント作成
まずはLINE Business IDを作成します。
公式サイトの右上にあるアカウントの開設をクリックします。
LINE公式アカウントとLINE広告の選択が表示されるので、LINE公式アカウント開設をクリックします。
次に認証済アカウントと未認証アカウントの選択ですが、今回は未認証アカウントを作成するので、未認証アカウントを開設するをクリックします。
アカウントを作成をクリックします。
登録はLINEアカウントを使用する方法とメールアドレスを使用する方法がありますが、今回はメールアドレスで登録します。
メールアドレスに登録用のリンクが送られるので、リンクをクリックします。
遷移後の画面で名前とパスワードを入力して、登録をクリックします。
これでアカウントの登録が完了しました。
サービスに移動をクリックします。
最後に開発者登録を行います。
名前とメールアドレスを入力して、Create my accountをクリックします。
これでアカウントの登録が一通り完了しました。
プロバイダーとチャネルの作成
プロバイダーとチャネルを作成します。
プロバイダーはアプリを提供する組織のことで、企業名などを設定します。
アカウント作成後の画面下部にある「Create a new provider」をクリックします。
プロバイダー名を入力して、Createをクリックします。
これでプロバイダーが作成できたので、引き続きチャネルを作成します。
まずはチャネルのタイプの選択ですが、今回はMessaging APIを使用するのでCreate a Messaging API channelを選択します。
チャネル名や説明文など、必要な項目を入力してCreateをクリックします。
今回カテゴリは個人、サブカテゴリは個人(その他)としました。
これでチャネルの作成ができました。
チャネルシークレットとチャネルアクセストークンを後ほど使用するので、コピペしておきます。
チャネルシークレットはBasic settingsタブの下部にあります。
チャネルアクセストークンはMessaging APIタブの下部にあります。
Issueをクリックして発行してください。
今回は長期のチャネルアクセストークンを使用しますが、短期のチャネルアクセストークンを使用したい場合は公式のドキュメントをご確認ください。
ボットの作成
次にボットを作成していきます。
今回は公式で用意されているline-bot-sdk-phpを使用します。
また、Herokuを使ってボットをデプロイするので、Herokuのアカウントがない場合はこちらの記事を参照して準備してください。
composerを使ってline-bot-sdkをインストールします。
composer require linecorp/line-bot-sdk
以下のようなエラーが表示されてインストールできない場合、php.iniのextension=php_sockets.dllのコメントアウト外すとインストールできるようです。
linecorp/line-bot-sdk 6.1.0 requires ext-sockets * -> it is missing from your system. Install or enable PHP's sockets extension. To enable extensions, verify that they are enabled in your .ini files:
vendorディレクトリが生成されていればOKです。
.gitignoreを用意して、vendorディレクトリをGit管理から除外しておきます。
vendor/
index.phpを設置して、以下のように記述します。
チャネルシークレットとチャネルアクセストークンは先ほどコピペした内容を入れてください。
<?php require_once __DIR__ . '/vendor/autoload.php'; $input = file_get_contents('php://input'); $json = json_decode($input); $httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('チャネルアクセストークンをここに入れる'); $bot = new \LINE\LINEBot($httpClient, ['channelSecret' => 'チャネルシークレットをここに入れる']); $event = $json->events[0]; if($event->type == 'message') { $messageData = $event->message; if($messageData->type == 'text') { if($messageData->text == '委員長') { $replyText = '月ノ美兎'; } else if($messageData->text == '皇女') { $replyText = 'リゼ・ヘルエスタ'; } else { $replyText = $messageData->text; } } else if($messageData->type == 'image') { $replyText = '画像'; } else { $replyText = "テキスト・画像以外"; } } $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($replyText); $response = $bot->replyMessage($event->replyToken, $textMessageBuilder); return;
基本的にはオウム返しするだけですが、「委員長」と送信すると「月ノ美兎」、「皇女」と送信すると「リゼ・ヘルエスタ」と返ってきます。
コミットとプッシュを行います。
git add . git commit -m "bot test" git push heroku master
これでボットの準備ができました。
Webhookの設定と動作テスト
LINE Developersに戻り、Webhookの設定を行います。
Messaging APIのタブを開いて、Webhook URLで先ほどのHerokuのURLを指定します。
設定後、その下のUse webhookも有効にしておけばOKです。
合わせて、自動応答メッセージをオフにしておきます。
同一タブ内にあるAuto-reply messagesのEditをクリックします。
応答設定 > 詳細設定 > 応答メッセージ をオフにします。
これで一通りの設定が完了しましたので、ボットの動作確認をしてみます。
Messaging APIタブ内にあるQRコードを読み込んで、作成したアカウントを友達に追加します。
メッセージを送信すると、返答が返ってくるのが確認できました。
コメントが承認されるまで時間がかかります。