LINEのMessaging APIとチャットの応答を返すボットサーバーを用意すれば、LINEのチャットボットを簡単につくることができます。
いつも使うLINEから、ちょっとしたメモ書きや辞書ツールなどが使えれば、便利そうです。
そこで、さくらのレンタルサーバ(さくらサーバ)を使ったチャットボットを作ってみました。
目次
今回つくるもの
こちらの入力内容をそのまま返す、チャットボット
環境
- 使用したサーバ: さくらのレンタルサーバ スタンダード
- 使用したSDK: 公式SDK(PHP) https://github.com/line/line-bot-sdk-php
SDKはさくらサーバ標準で使用できるPHP用を選びました。
参考にしたサイト
さくらインターネットでLINE bot作った時につまづいたこと:
やったこと
- さくらサーバのドメインの設定
- LINEのチャネル作成
- ボットサーバへのSDKのインストール
- ボットの作成
ドメインの設定
さくらサーバをMessaging APIのボットサーバとして使用するには、SSLを有効にしたドメインが必要となります。
さくらでは独自ドメインとサブドメインが2種類があり、今回は無料で利用できるサブドメインを新たに追加しました。
コントロールパネルから、「ドメイン/SSL」→「ドメイン新規追加」→「さくらインターネットのサブドメインを使う」を選択し、希望のドメイン名を指定できます。
今回は「bot.jeez.jp」というドメインを作成しました。
そのごドメイン設定にて「共有SSLを利用する」を選択すればOKです。
LINEのチャネル作成
Messaging APIを始めるにあたって、まずLINEチャネルを作成する必要があります。
チャネルは、Messaging APIやLINEログインといったLINEプラットフォームが提供する機能を、プロバイダーが開発するサービスで利用するための通信路です。
公式サイトの手順(https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-console)に従い、LINE Developersコンソールでチャネルを作成します。
- LINE Developersコンソールにログインする
- 開発者として登録する(初回ログイン時のみ)
- 新規プロバイダーを作成する
- Messaging API用のチャネルを作成する
Provider名、チャネル名を設定してください。ここではkafu、kafubotとしました。
他の項目を埋め、チャネルを作成します。
SDKの設定
さくらサーバにSSHログインし、SDKをインストールします。
さくらサーバにはSDKのインストールに必要なcompopserが入っていないため、まず最小にcomposerをインストールします。
[kafu@www648 ~/www/bot]$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 2.2.6) successfully installed to: /home/f-boyaki/www/bot/composer.phar
Use it: php composer.phar
その後は、github記載の手順に従い、SDKをインストールします。
https://github.com/line/line-bot-sdk-php
先ほどインストールしたcomposerに設定されていないため、パスを指定して実行します。
これでSDKのインストールは完了です。
ボットの設置
[kafu@www648 ~/www/bot]$ ./composer.phar require linecorp/line-bot-sdk
Using version ^3.6 for linecorp/line-bot-sdk
./composer.json has been created
Running composer update linecorp/line-bot-sdk
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking linecorp/line-bot-sdk (3.6.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading linecorp/line-bot-sdk (3.6.0)
- Installing linecorp/line-bot-sdk (3.6.0): Extracting archive
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
SSL設定したドメインにcallback.phpを作成します。
今回は入力された内容をおうむ返しにするようにしました。
<?php
$accessToken = 'アクセストークン';
$jsonString = file_get_contents('php://input'); error_log($jsonString);
$jsonObj = json_decode($jsonString); $message = $jsonObj->{"events"}[0]->{"message"};
$replyToken = $jsonObj->{"events"}[0]->{"replyToken"};
$messageData = [ 'type' => 'text', 'text' => $message->{"text"} ];
$response = [ 'replyToken' => $replyToken, 'messages' => [$messageData] ];
error_log(json_encode($response));
$ch = curl_init('https://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($response));
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charser=UTF-8', 'Authorization: Bearer ' . $accessToken ));
$result = curl_exec($ch); error_log($result);
curl_close($ch);
https://bot.jeez.jp/callback.php
最初に入れるアクセストークンは、LINEデベロッパーのMessage APIのページで取得します。
ボットの設定
LINE公式サイトの手順に従い、さきほど作成したチャットボットをWebhook URLとして設定します。
LINE Developersコンソールにログインし、Messaging APIのチャネルがあるプロバイダーをクリックします。
Messaging APIのチャネルをクリックします。
[Messaging API設定]タブをクリックします。
[Webhook URL]の[編集]をクリックし、Webhook URL(LINEプラットフォームからボットにイベントを送信する際の送信先URL)を入力して、[更新]をクリックします。
Webhook URLにはHTTPSを使用し、一般的なブラウザ等で広く信頼されているルート認証局で発行されたSSL/TLS証明書を設定する必要があります。また、自己署名証明書は利用できない点に注意してください。SSL/TLSの設定で問題が発生した場合は、SSL/TLS証明書チェーンが完全で、中間証明書がサーバーに正しくインストールされていることを確かめてください。
[検証]をクリックします。
設定したWebhook URLでWebhookイベントを受け取ると、「成功」と表示されます。
Webhook URLにhttps://bot.jeez.jp/callback.phpを指定します。
[Webhookの利用]を有効にします。
応答メッセージの設定(任意)
LINE Developersコンソールで応答メッセージを設定します。
[Message API設定]画面から、あいさつメッセージと応答メッセージをそれぞれ設定します。
応答メッセージは特に必要なければ無効にしておきましょう。
LINEからアクセスする
LINE公式アカウントを友だち追加します。
LINEアプリから、さきほどボットを設定したチャネルのLINE公式アカウントを、友だち追加します。LINE Developersコンソールの[Messaging API設定]タブにあるQRコードを読み取ります。