さくらインターネットでLineボット

投稿者: | 2022年3月16日

LINEのMessaging APIとチャットの応答を返すボットサーバーを用意すれば、LINEのチャットボットを簡単につくることができます。
いつも使うLINEから、ちょっとしたメモ書きや辞書ツールなどが使えれば、便利そうです。

そこで、さくらのレンタルサーバ(さくらサーバ)を使ったチャットボットを作ってみました。

今回つくるもの

こちらの入力内容をそのまま返す、チャットボット

環境

  • 使用したサーバ: さくらのレンタルサーバ スタンダード
  • 使用したSDK: 公式SDK(PHP) https://github.com/line/line-bot-sdk-php

SDKはさくらサーバ標準で使用できるPHP用を選びました。

参考にしたサイト

Messaging APIの公式ドキュメント

さくらインターネットで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として設定します。


https://developers.line.biz/ja/docs/messaging-api/building-bot/#set-up-bot-on-line-developers-console

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コードを読み取ります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です