ここでは「LINE API」を使ったオウム返しBOTの作り方と使い方をマニュアル化しました。
マニュアル化しようとした背景として、どのサイトも情報不足、説明不足でなんどもググる必要があり大変だったからです。
そのため、オウム返しBOTを作成するために必要なことを余すと来なく詰め込みました。
この記事を読むことで
LINE APIを使ったチャットボットの基礎
Heroku、GitHubの設定&使い方
LINE Developersの応答設定
といったLINE APIを使ったチャットボットの作成するために必要なことを取り入れています。
最終的にできあがるチャットボットは
といった感じです。
是非この機会にLINE APIを使ったチャットボットを作成してみましょう。
それでは始めていきますね。
LINE APIを使うための下準備をする
まずはLINE APIを使ったチャットボットを作るために必要なアカウント等を作成していきます。
開発環境および、使用するものは以下の通りです。
LINE BOTで必要なもの
LINE の個人アカウント
LINE DevelopersでのBOT準備
Herokuアカウント
GitHubアカウント
コマンドプロンプト(ターミナル等)
Python等のプログラム基礎知識
この中で、アカウント登録するものを先に済ませておきます。
LINE DevelopersでBOT用のチャンネルを準備
まずはLINE DevelopersでLINE BOTを作成します。
こちらから、LINE Developersに飛び、個人用のLINEアカウントおよびビジネスアカウントでログインをします。
ログインできたら「新規プロバイダー作成」をクリックして、新規プロバイダーを作成します。
このときサイトの言語表示が日本語以外の場合、サイト右下から言語を変更することができます。
LINE Developers等の登録が初めての場合は、登録されているチャンネルがないはずなので、下図のような状態になると思います。
なので、チャンネルの種類から「Messaging API」を選択してチャンネルを作成します。
個人情報等の記入を進め、下側へスクロールすると下図のようになっていると思います。
この
プライバシーポリシーURL
サービス利用規約URL
は任意なので(今回は使用しませんが)使うときに入力すればOKです。
あとは利用規約等を一通り目を通し、規約に同意してLINE BOTのチャンネルを作成します。
LINE BOTの読み込み&チャンネル情報の確認
LINE BOTのチャンネルが作成できたら、ご自身の個人アカウントへ友達登録をしましょう。
「Messaging API設定」の欄からQRコードを表示できるのでここから読み込みます。
また、のちに必要となる
チャンネルシークレット
チャンネルアクセストークン
がどこに記載されているかを確認しておきます。
チャンネルシークレットは「チャンネル基本設定」の下側に記載されています。
チャンネルアクセストークンは「Messaging API設定」の下側に記載されています。
すでに何かべつのシステムでアクセストークン等を使っている場合は再発行などしましょう。
Herokuアカウント作成&CLIのDL
続いて、Herokuアカウントの作成とHeroku CLIをインストールしていきます。
Heroku (ヘロク) とは、PaaS(Platform as a Service :パース)の一つで、アプリの公開に必要な開発環境を利用できるサービスになります。
まずはHerokuの公式サイトからアカウントを新規登録し「Heroku CLI」をインストールします。
サイト内の新規登録ボタンから下図の枠内に記載事項を打ち込み新規アカウントを作成します。
アカウントを作成後、設定したメールアドレスに確認メールが届くので、承認しましょう。
無事、アカウントが作成できたら、Heroku CLIをインストールします。
Heroku CLIはコマンドプロンプト(ターミナル等)でHerokuを扱うためのものという認識で問題ないかと思います。
Herokuのサイト内から「Command Line>Install the Heroku CLI」と進みダウンロードページへ進みます。
お使いのOSによってHeroku CLIをインストールしましょう。
ちなみにHerokuのセットアップはデフォルトのまま進めてもらえればOKです。
GitHubのアカウントを作成
さいごに、デプロイ環境を構築するために今回は「GitHub」を使用します。
です。
ローカルで作成したシステム(PCで書いたプログラム)をgitと呼ばれるリモートの場所(今回はGitHub)にpushしておく(デプロイ環境に置いておく)ことで、自動デプロイ環境を作ることができます。
Gitとデプロイ環境のイメージは下記のサイトが分かりやすかったので参考にしてみてください。
HerokuとGitHubの連携についてこのような方法があるそうです。
HerokuとGitHubを連携させて自動デプロイ環境を作ろう
と前置きが長くなりましたが、デプロイ環境を構築するためにGitHubを使用します。
まずは、GitHub公式サイトからアカウントを作成しましょう。
「私はロボットではありません。」のチェックをして、「Join a free plan」から無料のプランに登録しましょう。
登録すると、設定したメールアドレスに承認メールアドレスが届くので、承認が終了すればGitHubのアカウント登録は完了です。
コマンドプロンプトの動作について
この記事ではコマンドプロンプト(cmd)を使ってgitへのpushなどを行っていきます。
Windowsの方なら、画面左下の検索窓に「コマンドプロンプト」または「cmd」を入力することでコマンドプロンプトアプリが起動できます。
またLINE BOTのメインプログラムはPythonを使用するので、ご容赦ください。
LINE APIを使いBOTの設定・実装をする
それではLINE APIを使いオウム返しBOTの設定から実装をしていきます。
Herokuでアプリケーションを登録する
まずはコマンドプロンプトからHerokuにログインをします。
コマンドプロンプトを立ち上げた状態で
を入力しましょう
すると、Press any key to open up the browser to login or q to exit:
と表示されるので、「q」以外のキーを押してログインページをブラウザで開きます。
ブラウザ上でログインすると、
Loggin in .. done
Logged in as 登録したメールアドレス
と表示されログインが完了します。
続いて、LINEのAPIであるMessaging APIからHerokuへリクエストが送信されたときに、動作させるためのアプリケーションをHerokuで作成します。
と入力し、Heroku内にアプリケーションを作成します。
ここで注意が必要で
! contain lowercase letters, digits, and dashes.
と警告がでる場合があります。
この日訳は
アプリケーション名の始めと終わりは文字or数字で終わること
小文字、数字、ダッシュ(ハイフンのこと)を含むこと
となります。
この条件で決めるのが大変だと思う方は
でアプリケーション名ランダムで作成しましょう。
作成するとHerokuの「ダッシュボード一覧」に作成したアプリケーション名が表示されます。
作成したアプリケーション名が表示されていればOKです。
LINE BOT動作用のファイルを作る
続いて、LINE BOTを動作させるために必要なファイルおよびPythonのプログラムを用意します。
作成するのは全部で4つで、これを
に作成しました。
このパスは後でコマンドプロンプトから入る階層になるので、ご自身でパスを変える場合はそのパスを覚えておきましょう。
これら4つのファイルの内容ですが、このうち3つは各使用パッケージのバージョンなどを記載します。
そのため
とコマンドプロンプトへ入力し、現在使用しているバージョンを確認します。
私はflask –versionと入力すると下記のようになったのでこちらを例に進めていきます。
Flask==1.1.2
Werkzeug 1.0.1
まずruntime.txtにはpythonのバージョンのみを記載します。
runtime.txt
※Pythonと大文字にするとエラーがでるので必ず小文字でpythonと入力するようにしましょう。
続いてrequirements.txtにはFlaskとline-bot-sdkのバージョンを記載します。
requirements.txt
Flask==1.1.2
line-bot-sdk==1.8.0
line-bot-sdkのバージョンは1.8.0にしておきましょう。
Procfileは拡張子がないファイルということに注意します。
Procfile
さいごにメインのpythonファイルですが以下のように記述します。
main.py
from flask import Flask, request, abort from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) import os app = Flask(__name__) LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"] LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"] line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN) handler = WebhookHandler(LINE_CHANNEL_SECRET) @app.route("/callback", methods=['POST']) def callback(): signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) app.logger.info("Request body: " + body) try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return 'OK' @handler.add(MessageEvent, message=TextMessage) #オウム返し用のメッセージイベント def handle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=event.message.text) ) if __name__ == "__main__": port = int(os.getenv("PORT")) app.run(host="0.0.0.0", port=port)
プログラムは「新卒2年目のITコンサルタント(フォロー返します)」さんの「note」を参考にさせて頂きました。
ありがとうございます。
LINE DevelopersでWebhook URL、環境変数を設定
まだまだ続きます。
Herokuで登録したアプリケーション名をコピペして、LINE Developersの「Messaging API設定」からWebhookの設定を行います。
Webhookについてですが
とイメージしてもらえばOKです。
要するにHerokuのアプリケーションとLINE Developersを同期させておく感じ。
Webhook設定の欄に
と入力し、「更新」をクリックします。
更新をしたら、「Webhookの利用」を「ON」にして完了です。
※「検証」についてはWebhook URLが無効なHTTPステータスコードを返すが、オウム返しLINE BOTは動く。
Webhook URLが反映されるのに時間がかかるとか、エラー理由は不明。
Qiitaで探していたらまとめている方がいたので、この方の記事を参考に改善していきたいと思う。
Qiita:LINE DevelopersのWebhook URLの接続確認でエラーが出る件について
また、LINE Developersで始めに確認したチャンネルシークレットとチャンネルアクセストークンを環境変数として設定していきます。
ここではLINE BOT用のプログラムを「C: > code > LineBot」に作成しているので、コマンドプロンプトからこのディレクトリへ入っておきます。
環境変数の設定は、「heroku config:」コマンドを使って
と入力し、チャンネルシークレットを設定し
と入力してチャンネルアクセストークンを設定します。
Gitの設定とherokuへのデプロイ
さいごにGitの設定とherokuへデプロイすればチャットボットが完成します。
まず今回はデプロイ環境としてGitHubを使用しているので、GitHubアカウント作成時に設定したメールアドレスとユーザー名の設定を行います。
git config –global user.email “設定したメールアドレス”
git config –global user.name “設定したユーザー名”
※git configと–globalの間は1文字分のスペースあり
※ダブルクォーテーションはシングルクォーテーションでも可
設定したgitの内容を確認したい場合は
を使うとGit全ての設定を一覧で確認することができます。
あとは下記のコマンドを実行しデプロイすれば完了になります。
git init
heroku git:remote -a アプリケーション名
git add .
git commit -m “message”
git push heroku master
「heroku git:remote -a アプリケーション名」を実行すると
とHeroku git URLが作成されていることがわかります。↓
また「git push heroku master」まで実行が終ったら、リポジトリが登録されているかを「Heroku」で確認しましょう。
Herokuの「Overview」で
登録したメールアドレス :Bulid succeeded
と表示されていればリポジトリ登録は完了です。
またコマンドプロンプトで
と入力し
*master
remotes/heroku/master
と帰ってきたらLINE APIを使ったオウム返しチャットボットのシステムの完成になります。
上手くリポジトリ登録ができない場合は
実際に試してみた対処法
HerokuからアプリケーションをDelete
LINE Developersのアクセストークン、シークレットを再発行&再設定
Herokuへのデプロイをもう一度実行
Herokuからデバックログを確認して、エラーを直す
等を試してみてください。
自分は、一度リポジトリ登録が通らなかったので、もろもろの設定をし直したところ、上手くチャットボットが動くようになりました。
Herokuからのデバックログから直せるようになるといいのですが…
LINE Developersで応答設定を変更する
ここまで動作させて、LINE BOTを使ってみると、毎回
といった定型文が返信されます。
オウム返しBOTを作成したいので、赤枠のように送信した内容のみを返信するようにLINE Developersの設定を変えていきます。
「Messaging API設定」の下部
という欄があるので「編集」をクリックします。
編集をクリックすると「応答設定」の新しいウィンドウが開くので、その中から
へ進みます。
「応答メッセージ設定」内の内容に「メッセージありがとうございます!…」という項目があることが確認できるので
としたら設定は完了です。
これで問題なくオウム返しBOTが機能します。
是非この機会にチャレンジしてみてください。
参考にしたサイト(上記に記載されていないもの)
Qiita:herokuコマンド create からdestroyまで
どん底から這い上がるまでの記録:初めてのHeroku!!登録&初期設定からPythonアプリのデプロイ方法についてまとめてみる
Clasley Consulting,Inc.:Python 初心者!-LINE Botでオウム返し編-
[Python] PythonプログラムをHerokuにデプロイする方法
note:追伸。そろそろおまえもLINE Botを作るように 母より
お疲れ様でした。