LINE BOTを使用して、近場の飲食店を検索したり、名前がわからない女優を投稿して誰か探してもらったり、と非常に応用できる幅が広く今後もアイデア次第で様々な機能が実装できそうです。今回はまずは基本のオウム返しできるBOT作成してみる事にしました。
コンテンツ
環境
- Mac:カトリーナ10.15
- Python 3.7
- Lineアカウント
- heroku
全体像
Line 側の登録&設定
Line developers から開始します。
まずは「今すぐはじめよう」からログインをしていきます。
この画面にでたらOKです。
真ん中の「 Create a new provider」をクリックします。
また右下のEnglishから日本語にも変更できます。
プロバイター名はlinedeveloperで管理する名前になります。なので公開時には関係ありません。チャネル名が公開時のbotの名前になります。
bot作成は Messaging API になります。
選択すると、説明登録画面になりますので適当に入力をしていきます。
こんな画面になったらとりあえずOKです。
次にアクセストークンを取得します。
Messaging API設定を選択
画面の一番下まで行くと、チャネルアクセストークンとありますので、発行ボタンを押すと英数字が表示されます。
こちらは後ほど使用します。
機能実装
それでは早速pythonで作成をしていきます。
Macでターミナルから下記必要なモジュールをインストールします。
$ pip3 install flask
$ pip3 install line-bot-sdk
そして次に.pyの準備をします。
からみれます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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__) #環境変数取得 YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"] YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"] line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN) handler = WebhookHandler(YOUR_CHANNEL_SECRET) @app.route("/callback", methods=['POST']) def callback(): # get X-Line-Signature header value signature = request.headers['X-Line-Signature'] # get request body as text body = request.get_data(as_text=True) app.logger.info("Request body: " + body) # handle webhook 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__": # app.run() port = int(os.getenv("PORT", 5000)) app.run(host="0.0.0.0", port=port) |
Heroku設定
herokuに会員登録していない人でもすぐに登録ができますので、登録していない人は進めてください。
登録後
こちらの画面をクリックして下さい
pythonでの開発を始めるをクリック
準備ができましたをクリック
ちなみにヒロヤンはこちらでやりました
$ brew install heroku/brew/heroku
インストールが完了したら下記でログインします。
$ heroku login
この際、急にブラウザが開きますがそのままクリックすると無事ログインができ、会員登録時に使用したメールアドレスが表示されます。そしてappのクリエイトをします
$ heroku create あなたのアプリの名前
ちなみに下記条件を守らないと下記エラーが出ます。
無事作成されるとdone!と言う事でURLが表示されます
引き続き、環境変数の設定になります。
Channel Secretとアクセストークンを設定します。
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの文字列" --app アプリ名
アクセストークンの文字列とは、この記事の最初の方の、「Line 側の登録&設定」に出てきたLINE Channel access tokenになります。
また<アプリケーション名>は、herokuで設定したアプリ名になります。
そしてもう一つ
$ heroku config:set YOUR_CHANNEL_SECRET="アクセストークン文字列" --app アプリ名
こちらも同様に、Line側のChannel secret とherokuで設定したアプリ名になります。問題なければdoneと表示されます。
これがうまくコマンドされれば
ここをクリックすると
ここに登録されています。つまりここで登録されたものが
main.pyに記載された
1 2 |
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"] YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"] |
ここに設定が入る訳です。
設定ファイルの作成、デプロイ
4つのファイルを準備します。ここは各々微調整お願いします。
runtime.txt↓
1 |
python-3.7.2 |
requirements.txt↓
1 2 |
Flask==1.1.1 line-bot-sdk==1.15.0 |
Procfile↓
1 |
web: python main.py |
pythonのプログラムと設定ファイルのデプロイ をします
1 2 3 4 |
$ git init $ git add 4つのファイル $ git commit -m "first commit" $ git push heroku master |
するとエラーが出ました
ムゥ・・・。リモート側にレポジトリを作って上げる必要があるのですね。
色々探し回りまして、なんとherokuで便利な操作方法を見つけました。
herokuのページのDeployに記載が親切にありました。
この調子でやってみます。
webhookの設定
line側に戻ります。
ここの設定をします。
ピンク箇所には、herokuのアプリ名を入れます↓
こちらの応答メッセージもオフにします。
さぁ、これで完成です。早速何か投稿してみましょう。
無事できました!
次回はここから更に発展的に顔認証機能を搭載させて行きます。
参考サイト
NEXT・・・!
これができたら顔面偏差値を測るLINE BOTも作成できます!
スクールを利用して本格的に学ぶ
10人中9人が挫折すると言われるプログラミングを、半年間もの間頑張れ、結果、今はPythonエンジニアとして働く事ができているヒロヤンは、プログラミングスクールを利用して自ら目標を設定して講師の言う通りにひたすら打ち込んだまでです。
挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。
結局一人だとどうしてもだらけてしまいます。
これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。
ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考えました。
無料カウンセリングで、あなたの悩みを相談してみてはいかがでしょうか?
Youtubeでおなじみのまこなり社長が運営するプログラミングスクールになります。
上記リンク先から無料相談ができます。
コメントを残す