つくりたいもの
Messaging APIをつかって、こんなふうに自分がメッセージを送ったら
その内容をオウム返ししてくるBOTをつくってみようとおもいます!
Messaging APIの仕組み
Messaging APIを使うと、ボットアプリのサーバーとLINEプラットフォームの間でデータを交換できます。ユーザーがボットにメッセージを送るとwebhookがトリガーされ、LINEプラットフォームからボットアプリのサーバーのwebhook URLにリクエストが送信されます。すると、ボットアプリのサーバーからLINEプラットフォームに、ユーザーへの応答リクエストが送信されます。リクエストは、JSON形式でHTTPSを使って送信されます。
引用:Messaging API - LINE Developers
webhookがわからなかったのでこちらでお勉強させていただきました
https://qiita.com/soarflat/items/ed970f6dc59b2ab76169
準備するもの
- LINEアカウント(今回はもっているものとして進めていきます)
- Messaging API
- ボットアプリのサーバ(Heroku)
Messaging API
1. LINE Developersへアクセスし、「Messaging API(ボット)を始める」でアカウントをつくる
2. 個人のLINEアカウントのメールアドレス・パスワードでログイン
3. 開発者登録
名前とメールアドレスを入力し、登録完了です!
4. プロバイダを作成
5. チャネルを作成
プラン
調べてみたところ、Developer Trialとフリーの大きな違いとしては以下の通りでした。
どちらも無料のプランですが、
・Developer Trialは友達登録が50人まで
・フリーはPush API(ボットからの自発的なメッセージ送信)ができない
とそれぞれ制限があります。
今回は友達は50人登録できれば十分なので、Developer Trialを選択しました。
その他プランなど詳しい情報はこちらをご覧ください
LINE@プラン・料金
大業種・小業種
ファッションについての情報を発信するならばファッション、
食べ物についての情報を発信するのであればグルメ・食料品 など
かなりざっくり決めてしまっていいようです!
わたしは芸人が好きなのでとりあえず有名人・コメディアンにしました。
入力をすべて終え、確認をおすと作成したチャネルを確認することができます。
つくられています!
ですが、「設定が完了していません」とあります...クリックしましょう。
・アクセストークン:再発行
・Webhook送信:利用する
・自動応答メッセージ:利用しない
と設定してください。
Webhook URLにはボットアプリのサーバのURLがはいるのでまだ空欄で大丈夫です。
いったんこちらはこのままで、次にボットアプリのサーバを用意していきます。
ボットアプリのサーバ(Heroku)
Herokuを利用してボットアプリのサーバを用意します。
Herokuとは?
heroku(ヘロク)とは、PaaS(Platform as a Service)と呼ばれるサービスで、アプリケーションを実行するためのプラットフォームです。もう少しわかりやすく説明すると、サーバやOS、データベースなどの「プラットフォーム」と呼ばれる部分を、インターネット越しに使えるようにしてくれるサービスの一つです。
引用:【5分でわかる】herokuとは?概要や特徴をわかりやすく解説
1. Herokuのアカウント作成
アカウントをまだ持っていない方はこちらから作成してください!
2.サーバ(アプリ)を作成
「Create New App」をクリックし、アプリ作成画面へ移動します。
「App Name」はさきほどのWebhook URLのドメインとなります。
わたしはlinebot0325
と設定しましたが、ここはユニークなものにならなければいけないので、違うものを登録してください。
アプリができたところで、次にプログラムを書いていきます。
3. Messaging API SDK for PHPをインストール
$ mkdir line-bot-sdk-php
$ cd line-bot-sdk-php
$ composer require linecorp/line-bot-sdk
4. 別のディレクトリを作成し、インストールしたSDKから必要なファイルのみ移動
今回必要となるファイルは以下の2つです。
line-bot-sdk-tiny/echo_bot.php
line-bot-sdk-tiny/LINEBotTiny.php
$ cd ..
$ mkdir linebot0325
$ mv line-bot-sdk-php/vendor/linecorp/line-bot-sdk/line-bot-sdk-tiny/echo_bot.php linebot0325
$ mv line-bot-sdk-php/vendor/linecorp/line-bot-sdk/line-bot-sdk-tiny/LINEBotTiny.php linebot0325
5. 空のindex.php
ファイルを作成
index.php
がないと怒られてしまうようなので、空のファイルを作成しておきます。
$ cd linebot0325
$ vi index.php
lsコマンドできちんと移動・作成できているか確認してみましょう!
$ cd linebot0325
$ ls
6. echo_bot.php
のファイル名をwebhook.php
へ変更し、内容も一部書きかえる
$ mv echo_bot.php webhook.php
$ vi webhook.php
viコマンドではなく、テキストエディタでひらいて変更でも問題ありません。
<?php
/**
* Copyright 2016 LINE Corporation
*
* LINE Corporation licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
require_once('./LINEBotTiny.php');
$channelAccessToken = '<your channel access token>';
$channelSecret = '<your channel secret>';
$client = new LINEBotTiny($channelAccessToken, $channelSecret);
foreach ($client->parseEvents() as $event) {
switch ($event['type']) {
case 'message':
$message = $event['message'];
switch ($message['type']) {
case 'text':
$client->replyMessage(array(
'replyToken' => $event['replyToken'],
'messages' => array(
array(
'type' => 'text',
'text' => $message['text']
)
)
));
break;
default:
error_log("Unsupporeted message type: " . $message['type']);
break;
}
break;
default:
error_log("Unsupporeted event type: " . $event['type']);
break;
}
};
?>
変更するべきところは18, 19行目です!
$channelAccessToken = '<your channel access token>';
$channelSecret = '<your channel secret>';
<your channel access token>
はチャネルをつくったときに再発行したアクセストークンに、
<your channel secret>
は同じくチャネルの基本設定にあるChannel Secretに
それぞれかきかえます。
これで送ったメッセージに対しオウム返ししてくるプログラムは完成です
あとはHerokuにデプロイしていきます。
$ heroku login
gitのリポジトリを新たに作成する
$ cd linebot0325
$ git init
Herokuの接続先を変更する
$ heroku git:remote -a linebot0325
ディレクトリ配下のすべてのファイルをコミットの対象とする。
$ git add .
コミット・プッシュする
$ git commit -am "make it better"
$ git push heroku master
これにてデプロイも完了です!
最後に空欄にしてあったチャネル基本設定の「Webhook URL」を
https://<アプリ名>.herokuapp.com/webhook.php
と設定すればアカウントが動いてくれるはずです!
さっそく友達登録をして試してみましょう!
謎
接続確認でこのようなエラーがでているのにもかかわらず、BOTはしっかりと動いてくれているという・・・
今日は体力と頭の限界なので後日調査し追記したいと思います
最後に
ある記事に「わずか5分で」とかかれていたため、気軽な気持ちでやってみましたが、
わたしでは実装2時間+この記事作成22時間、計24時間かかってしまいました
ですがやっぱり手軽にBOTをつくれるというのは楽しく、
もっといろんな仕様のBOTをつくってみたくなりました!
アドバイス、指摘事項などいただけるとうれしいです