注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

LINE APIを使ったオウム返しBOTの作成・使い方マニュアル(ver_Python)

  • 2020年9月28日
  • 2021年9月23日
  • Python

ここでは「LINE API」を使ったオウム返しBOTの作り方と使い方をマニュアル化しました。

マニュアル化しようとした背景として、どのサイトも情報不足、説明不足でなんどもググる必要があり大変だったからです。

そのため、オウム返しBOTを作成するために必要なことを余すと来なく詰め込みました。

 

この記事を読むことで

LINE APIを使ったチャットボットの基礎

Heroku、GitHubの設定&使い方

LINE Developersの応答設定

といったLINE APIを使ったチャットボットの作成するために必要なことを取り入れています。

 

最終的にできあがるチャットボットは

Line-bot-result

といった感じです。

 

是非この機会に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 Developersに飛び、個人用のLINEアカウントおよびビジネスアカウントでログインをします。

 

ログインできたら「新規プロバイダー作成」をクリックして、新規プロバイダーを作成します。

LINE-Developer1

 

このときサイトの言語表示が日本語以外の場合、サイト右下から言語を変更することができます。

 

LINE Developers等の登録が初めての場合は、登録されているチャンネルがないはずなので、下図のような状態になると思います。

なので、チャンネルの種類から「Messaging API」を選択してチャンネルを作成します。

 

Messaging_API_1

 

個人情報等の記入を進め、下側へスクロールすると下図のようになっていると思います。

この

プライバシーポリシーURL

サービス利用規約URL

は任意なので(今回は使用しませんが)使うときに入力すればOKです。

 

LINE-Developer2

 

あとは利用規約等を一通り目を通し、規約に同意してLINE BOTのチャンネルを作成します。

 

LINE BOTの読み込み&チャンネル情報の確認

LINE BOTのチャンネルが作成できたら、ご自身の個人アカウントへ友達登録をしましょう。

Messaging API設定」の欄からQRコードを表示できるのでここから読み込みます。

 

read_QRcode

 

また、のちに必要となる

チャンネルシークレット

チャンネルアクセストークン

がどこに記載されているかを確認しておきます。

 

チャンネルシークレットは「チャンネル基本設定」の下側に記載されています。

channel_secret_line

 

チャンネルアクセストークンは「Messaging API設定」の下側に記載されています。

accesstoken_line

すでに何かべつのシステムでアクセストークン等を使っている場合は再発行などしましょう。

 

Herokuアカウント作成&CLIのDL

続いて、Herokuアカウントの作成とHeroku CLIをインストールしていきます。

 

Heroku (ヘロク) とは、PaaS(Platform as a Service :パース)の一つで、アプリの公開に必要な開発環境を利用できるサービスになります。

 

まずはHerokuの公式サイトからアカウントを新規登録し「Heroku CLI」をインストールします。

 

Herokuの公式サイトはこちら

 

サイト内の新規登録ボタンから下図の枠内に記載事項を打ち込み新規アカウントを作成します。

heroku_account_set

 

アカウントを作成後、設定したメールアドレスに確認メールが届くので、承認しましょう。

 

無事、アカウントが作成できたら、Heroku CLIをインストールします。

Heroku CLIはコマンドプロンプト(ターミナル等)でHerokuを扱うためのものという認識で問題ないかと思います。

 

Herokuのサイト内から「Command Line>Install the Heroku CLI」と進みダウンロードページへ進みます。

heroku_command_line

 

お使いのOSによってHeroku CLIをインストールしましょう。

download_heroku

 

ちなみにHerokuのセットアップはデフォルトのまま進めてもらえればOKです。

heroku_setup1

 

GitHubのアカウントを作成

さいごに、デプロイ環境を構築するために今回は「GitHub」を使用します。

デプロイとは、作成したシステムを実行環境で動作できるようにすること

です。

ローカルで作成したシステム(PCで書いたプログラム)をgitと呼ばれるリモートの場所(今回はGitHub)にpushしておく(デプロイ環境に置いておく)ことで、自動デプロイ環境を作ることができます。

 

Gitとデプロイ環境のイメージは下記のサイトが分かりやすかったので参考にしてみてください。

Qiita:gitを使ったデプロイ環境

 

HerokuとGitHubの連携についてこのような方法があるそうです。

HerokuとGitHubを連携させて自動デプロイ環境を作ろう

 

と前置きが長くなりましたが、デプロイ環境を構築するためにGitHubを使用します。

まずは、GitHub公式サイトからアカウントを作成しましょう。

 

GitHub公式サイトはこちら

 

Git_create_your_account

「私はロボットではありません。」のチェックをして、「Join a free plan」から無料のプランに登録しましょう。

登録すると、設定したメールアドレスに承認メールアドレスが届くので、承認が終了すればGitHubのアカウント登録は完了です。

 

コマンドプロンプトの動作について

この記事ではコマンドプロンプト(cmd)を使ってgitへのpushなどを行っていきます。

 

python-scraping1

Windowsの方なら、画面左下の検索窓に「コマンドプロンプト」または「cmd」を入力することでコマンドプロンプトアプリが起動できます。

 

またLINE BOTのメインプログラムはPythonを使用するので、ご容赦ください。

 

LINE APIを使いBOTの設定・実装をする

それではLINE APIを使いオウム返しBOTの設定から実装をしていきます。

 

Herokuでアプリケーションを登録する

まずはコマンドプロンプトからHerokuにログインをします。

コマンドプロンプトを立ち上げた状態で

heroku login

を入力しましょう

 

heroku_login_cmd

すると、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 create アプリケーション名

と入力し、Heroku内にアプリケーションを作成します。

ここで注意が必要で

! Name must start with a letter, end with a letter or digit and can only
! contain lowercase letters, digits, and dashes.

と警告がでる場合があります。

 

この日訳は

アプリケーション名の始めと終わりは文字or数字で終わること

小文字、数字、ダッシュ(ハイフンのこと)を含むこと

となります。

 

この条件で決めるのが大変だと思う方は

heroku create

アプリケーション名ランダムで作成しましょう。

 

作成するとHerokuの「ダッシュボード一覧」に作成したアプリケーション名が表示されます。

 

heroku_create1re

作成したアプリケーション名が表示されていればOKです。

 

LINE BOT動作用のファイルを作る

続いて、LINE BOTを動作させるために必要なファイルおよびPythonのプログラムを用意します。

 

Line-Bot-file

作成するのは全部で4つで、これを

Windows(C:)  >  code  >  LineBot

に作成しました。

 

このパスは後でコマンドプロンプトから入る階層になるので、ご自身でパスを変える場合はそのパスを覚えておきましょう。

 

これら4つのファイルの内容ですが、このうち3つは各使用パッケージのバージョンなどを記載します。

そのため

flask –version

とコマンドプロンプトへ入力し、現在使用しているバージョンを確認します。

 

私はflask –versionと入力すると下記のようになったのでこちらを例に進めていきます。

Python 3.7.5
Flask==1.1.2
Werkzeug 1.0.1

 

まずruntime.txtにはpythonのバージョンのみを記載します。

runtime.txt

python-3.7.5

※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

web:python main.py

 

さいごにメインの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についてですが

アプリケーションの情報やイベント発生を他のアプリや指定したURLへリアルタイムに送信・連携すること

とイメージしてもらえばOKです。

 

要するにHerokuのアプリケーションとLINE Developersを同期させておく感じ。

 

webhook_url_set

Webhook設定の欄に

https://アプリ名.herokuapp.com/callback

と入力し、「更新」をクリックします。

 

更新をしたら、「Webhookの利用」を「ON」にして完了です。

 

webhook_enable

 

※「検証」についてはWebhook URLが無効なHTTPステータスコードを返すが、オウム返しLINE BOTは動く。

Webhook URLが反映されるのに時間がかかるとか、エラー理由は不明。

 

Qiitaで探していたらまとめている方がいたので、この方の記事を参考に改善していきたいと思う。

Qiita:LINE DevelopersのWebhook URLの接続確認でエラーが出る件について

 

 

また、LINE Developersで始めに確認したチャンネルシークレットとチャンネルアクセストークンを環境変数として設定していきます。

 

ここではLINE BOT用のプログラムを「C: > code > LineBot」に作成しているので、コマンドプロンプトからこのディレクトリへ入っておきます。

 

環境変数の設定は、「heroku config:」コマンドを使って

heroku config:set LINE_CHANNEL_SECRET=”チャンネルシークレット” –app アプリケーション名

と入力し、チャンネルシークレットを設定し

 

heroku config:set LINE_CHANNEL_ACCESS_TOKEN=”チャンネルアクセストークン” –app アプリケーション名

と入力してチャンネルアクセストークンを設定します。

 

Gitの設定とherokuへのデプロイ

さいごにGitの設定とherokuへデプロイすればチャットボットが完成します。

 

まず今回はデプロイ環境としてGitHubを使用しているので、GitHubアカウント作成時に設定したメールアドレスとユーザー名の設定を行います。

git config –global user.email “設定したメールアドレス”

git config –global user.name “設定したユーザー名”

※git configと–globalの間は1文字分のスペースあり

※ダブルクォーテーションはシングルクォーテーションでも可

 

設定したgitの内容を確認したい場合

git config –list

を使うとGit全ての設定を一覧で確認することができます。

 

あとは下記のコマンドを実行しデプロイすれば完了になります。

git init

heroku git:remote -a アプリケーション名

git add .

git commit -m “message”

git push heroku master

 

「heroku git:remote -a アプリケーション名」を実行すると

https://git.heroku.com/アプリケーション名.git

とHeroku git URLが作成されていることがわかります。↓

 

git_init_cmd_re

 

また「git push heroku master」まで実行が終ったら、リポジトリが登録されているかを「Heroku」で確認しましょう。

Herokuの「Overview」で

web python main.py   ON
登録したメールアドレス :Bulid succeeded

と表示されていればリポジトリ登録は完了です。

 

またコマンドプロンプトで

git branch -a

と入力し

*master

remotes/heroku/master

と帰ってきたらLINE APIを使ったオウム返しチャットボットのシステムの完成になります。

 

heroku_branch-a

 

上手くリポジトリ登録ができない場合は

 

実際に試してみた対処法

HerokuからアプリケーションをDelete

 

LINE Developersのアクセストークン、シークレットを再発行&再設定

 

Herokuへのデプロイをもう一度実行

 

Herokuからデバックログを確認して、エラーを直す

等を試してみてください。

 

自分は、一度リポジトリ登録が通らなかったので、もろもろの設定をし直したところ、上手くチャットボットが動くようになりました。

Herokuからのデバックログから直せるようになるといいのですが…

 

LINE Developersで応答設定を変更する

ここまで動作させて、LINE BOTを使ってみると、毎回

「メッセージありがとうございます!…」

といった定型文が返信されます。

 

LINE-callback

 

オウム返しBOTを作成したいので、赤枠のように送信した内容のみを返信するようにLINE Developersの設定を変えていきます。

Messaging API設定」の下部

あいさつメッセージ 有効 編集

という欄があるので「編集」をクリックします。

 

LINE-Developer3

 

編集をクリックすると「応答設定」の新しいウィンドウが開くので、その中から

詳細設定 > 応答メッセージ設定

へ進みます。

 

LINE-Developer4

 

「応答メッセージ設定」内の内容に「メッセージありがとうございます!…」という項目があることが確認できるので

ステータス オフ

としたら設定は完了です。

 

LINE-Developer5

 

これで問題なくオウム返しBOTが機能します。

是非この機会にチャレンジしてみてください。

 

参考にしたサイト(上記に記載されていないもの)

 

Qiita:Herokuを使いこなすのに必要な術

 

Qiita:herokuコマンド create からdestroyまで

 

どん底から這い上がるまでの記録:初めてのHeroku!!登録&初期設定からPythonアプリのデプロイ方法についてまとめてみる

 

Clasley Consulting,Inc.:Python 初心者!-LINE Botでオウム返し編-

 

[Python] PythonプログラムをHerokuにデプロイする方法

 

note:追伸。そろそろおまえもLINE Botを作るように 母より

 

使い始める-最初のGitの構成

 

 

お疲れ様でした。

LINE-API-BOT-top
学びに関する情報をチェック!