🦁

[LINEBOT] 基本設定ファイル作成 ①

2021/01/17に公開

はじめに

筆者は、アルバイトでシステム開発を行っている九州大学の大学院生です。
本格的に開発を行っているのは1年ほどです。
対象となるのは「開発経験がほとんどないがLINEBOTで遊んでみたい学生」なので
開発したことたくさんあるよーって人は公式ドキュメントみた方がいいです..💦

記事は複数に分けて投稿しようかな?と思っているので
随時追加していきます!

github

https://github.com/shin-shin-01/LINEBOT.git

投稿内容(予定)

  1. LINEアカウントを作成 @ LINE Developers
  2. Python 基本設定ファイルの作成
  3. おうむ返しBOT作成
  4. ローカルで動作確認
  5. Heroku にデプロイする
  6. リッチメニューの設定方法
  7. ユーザごとにLINEBOTの返信内容を変えてみる

本記事では以下の内容を紹介していきます

  1. LINEアカウントの作成方法
  2. Python 基本設定ファイルの作成

1 LINEアカウントを作成 @ LINE Developers

1-1 はじめに LINE Developers にアクセスしてログインする

1-2 プロバイダーを作成

スクリーンショット 2021-01-17 15.23.21.png

1-3 Create a channel から実際のアカウントを作成する

Channel Type: Messaging API にして自由にアカウントを作成してください
Privacy policy URL などは設定しなくて大丈夫です!
アカウント名や画像などは後で変更可能です(LINE Official Account Managerで簡単に変更できます)

1-4 アカウント追加

スクリーンショット 2021-01-17 15.23.21.png

ここまででLINEアカウントの作成は完了です!

2 設定ファイルの作成

ここから実際にコードをかいていきます
今回は Python で書きます。参考資料はこちら。

line-bot-sdk-python :github
https://github.com/line/line-bot-sdk-python

line-bot-sdk-python :document
https://developers.line.biz/ja/reference/messaging-api/

必要なファイルと階層構造

.
├── main.py
├── requirements.txt
├── .env
├── .gitignore

1. インストールするライブラリを記載した requirements.txt

requirements.txt
Flask
line-bot-sdk
python-dotenv # 環境変数取得

2. メインプログラム main.py

ボットを動作させるための設定を書いています。

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, dotenv
 
app = Flask(__name__)
 
# 環境変数取得
# LINE Developers: アクセストークン/ChannelSecret
dotenv.load_dotenv()
CHANNEL_ACCESS_TOKEN = os.environ["CHANNEL_ACCESS_TOKEN"]
CHANNEL_SECRET = os.environ["CHANNEL_SECRET"]
 
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(CHANNEL_SECRET)
 
# Webhookからのリクエストの署名検証部分
@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: # 失敗したとき エラー
        print("Invalid signature. Please check your channel access token/channel secret.")
        abort(400)

    return 'OK'

# 以降で ボット処理内容について記載 =========================================
 

# ====================================================================

# python main.py で動作
if __name__ == "__main__":
    app.run(port=5000)

3. gitにpushしないファイルを記載 .gitignore

以下のファイルの中身をそのまま記載しています
https://github.com/github/gitignore/blob/master/Python.gitignore

4. 環境変数ファイル .env

LINEBOTで使用する アクセストークンや ChannelSecret は秘密情報なので git にあげないようにここに記載します

.env
CHANNEL_ACCESS_TOKEN = ""
CHANNEL_SECRET = ""

LINE Developers の以下の箇所から取得した値を設定します


CHANNEL_SECRET

CHANNEL_ACCESS_TOKEN

おわりに

作業が完了したら忘れずに git にあげておきましょう

ターミナル実行
git init 
git remote add origin ~~
git add .
git commit -m "first commit"
git push origin master

今回は LINEBOT を作るための基本的な作業を行いました
次回からは実際にLINEBOTを動かしてみたいと思います
ありがとうございました!

Kaze Shindo
iQLab Engineer

Discussion