LINEbotを作る(botアカウント作成~稼働まで)

普段Twitterでbotを作っているが、LINE版も作ってみたのでその手順を。

 

 

 

 

 

※この記事の内容は、2017年10月31日時点のものです。

 

 

【準備】

・スマホにLINEが入ってない人はインストールしてアカウントを作っておく。(メールアドレスの設定もしておく)

・botのスクリプトを設置するサーバー(SSL必須)を用意。(管理人はロリポップのライトプランを使っている)

 

 

【流れ】

LINEbotを作るにはLINE@という開発者用のアカウントを開設する必要がある。

(LINEの通常アカウントがあればすぐに作れる)

botアカウントを作るまでの流れとしては以下のような感じ。

 

LINE@アカウントを開設

botアカウントを作成

botの画像やプロフなどを設定

スクリプト(PHP)を設置して実際に動かす。

 

 

 

①LINE@アカウントを開設

 

http://at.line.me/jp/

このページに行って作成する。

「認証済みアカウントを申請する」と「一般アカウントを作成する」というのが出るが、「一般アカウントを作成する」から作る。

アカウントの基本情報は、以下のような感じで適当に。

 

 

 

②botアカウントの設定

 

そのままログインすると、既にbotアカウントが1つ作成されている。

このアカウントの設定をしていく。

ということで、出来上がってるアカウントを選択。

 

bot個別の設定画面が出るので、

左メニューの「アカウント設定」「Messaging API設定」と入っていく。

最初はbotをスクリプトから動かすためのMessaging APIが使える状態になっていないので、申し込む必要がある。

「APIを利用する」を押して進む。

 

プロバイダー名は、グループ名みたいなもの。

LINE@アカウントの中にプロバイダーがあって、さらにその中にbotアカウントが属する形になる。

入力したら、「APIを利用する」から次に進む。

「APIの利用を開始すると、利用前の状態に戻すことはできません。(以下略)」のメッセージが出てくるけど、「確認」を押してそのまま進む。

 

※ちなみに申し込むとフリープランが適応されるためお金はかからないが、リプライしか出来ない。

Twitterのように任意のタイミングでも投稿したい場合はあとで有料のプランに変更する必要がある。

ただし高額なためお勧めはできない。。。

 

これでMessaging APIが使えるようになったので、「LINE Developersで設定する」から進む。

 

※ややこしいが、LINE@の管理画面とは別に、Messaging APIを使うbot用の管理画面がある。

 

また専門用語。

「Channel(チャネル)」は、Messaging APIの使えるLINEbotのこと。(多分)

前述の通り、「プロバイダー」の中に属するものになる。

(プロバイダーとチャネルは沢山作れるみたいだけど、上限は不明。)

で、この部分では「アプリアイコン」(botのアイコン)を設定する。

続けて、その下の設定へ。

 

以下の設定をする。

「アクセストークン」……再発行を押して、有効期間を0時間(無制限)のままトークンを発行。

→APIを叩く時に必要なのでメモしておく。

「Webhook送信」……利用するに変更。

「Webhook URL」……スクリプトを設置するサーバーのURLを入れて、接続確認もしておく。

「https://dummyserver.com/linebot/webhook.php」等。

※SSL必須。ただし Let’s Encrypt はイケたりイケなかったりするみたい。

管理人はロリポップの共有SSL下を指定している。

「自動応答メッセージ」……不要なので利用しない。

 

LINE Developersでの設定は以上。

さっきのLINE@の管理画面に戻って、残りの設定をしていく。

 

「メッセージ」「友だち追加時のあいさつ」と進み、あいさつのテキストを変更する。

そのままでもいいが、botらしいものに変えておくことをお勧めする。

 

「アカウントメッセージ」「カバーデザイン」と進み、カバー画像やボタンカラーなどを変更する。

これもそのままでもいいが、botらしいものに変えておくことをお勧めする。

 

同じく、「アカウントページ」「アカウント紹介」と進み、内容を入れておく。

他の設定しなくても、ここのプロフィールぐらいは入れておいた方がいいだろう。

 

「アカウント設定」「基本設定」の画面でQRコードが表示されているので、LINEで読み取って友達になっておく。

で、「編集する」の先の画面で、「カバー画像」も変更しておく。

カバー画像も必須ではないが、TwitterやFBのヘッダー画像に相当するものなので、設定して置いた方がいい。

 

これでひと通りの設定は完了。

 

 

 

③スクリプトを設置して動かす

 

以下のスクリプトを、先程Webhook URLの設定で指定した場所に設置。

<?php

$accessToken = ”; //LINE Developers で取得したアクセストークンを入れる

//ユーザーからのメッセージ取得
$json_string = file_get_contents(‘php://input’);
$json_object = json_decode($json_string);

//取得データ
$replyToken = $json_object->{“events”}[0]->{“replyToken”}; //返信用トークン
$message_type = $json_object->{“events”}[0]->{“message”}->{“type”}; //メッセージタイプ
$message_text = $json_object->{“events”}[0]->{“message”}->{“text”}; //メッセージ内容

//メッセージタイプが「text」以外のときは何も返さず終了
if($message_type != “text”) exit;

//返信メッセージ
$return_message_text = “「” . $message_text . “」を受け取りました”;

//返信実行
sending_messages($accessToken, $replyToken, $message_type, $return_message_text);
?>
<?php
//メッセージの送信
function sending_messages($accessToken, $replyToken, $message_type, $return_message_text){
//レスポンスフォーマット
$response_format_text = [
“type” => $message_type,
“text” => $return_message_text
];

//ポストデータ
$post_data = [
“replyToken” => $replyToken,
“messages” => [$response_format_text]
];

//curl実行
$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($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json; charser=UTF-8’,
‘Authorization: Bearer ‘ . $accessToken
));
$result = curl_exec($ch);
curl_close($ch);
}

ほぼ、こちらのブログのものを拝借。

 

LINEで何かメッセージを送って、オウム返しに返って来たら成功。

 

以上。

APIのリファレンス等は下記。

 

 

 

【その他メモ】

●Messaging APIには、メッセージを受けた時のみ投稿することの出来るリプライ専用のものと、任意のタイミングで投稿するものがある。

フリープランではリプライしかできないが、両方使いたい場合は料金が高額になるためお勧めできない。(プランの詳細についてはページ下部のリンク参照)

●LINE@の料金プランにメッセージ配信数がというものが書かれているが、これはMessasing APIで普通にテキストを投稿するものではなく、恐らくLINE@の管理画面から投稿するものであったり、リッチコンテンツと言われるものを投稿する場合のカウントだと思われる。

何にしても、フリープランでMessasing APIをメインで使う場合はほとんど気にする必要はない。

 

 

【参考・リンク】

LINE@の料金プラン

Messaging APIのリファレンス

LINE@ 管理画面

LINE Developers 管理画面

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください