[Python]LineBot 만들기

소개



Heroku와 Python을 사용하여 되돌아 오는 LINE BOT을 만드는 방법을 요약했습니다.

환경



macOS Mojava

사전 준비



Line Developer 계정 등록
Heroku 계정 등록
Homebrew 설치

Line Developer 측 설정



채널 만들기
・채널의 종류는 「Messaging API」를 선택.
· 채널명, 채널 설명 등을 입력하여 작성합니다.

채널 비밀, 채널 액세스 토큰을 확인합니다.
· lineBot 작성에 필요합니다.
· [채널 기본 설정] - [채널 비밀]
· [Message API 설정] - [채널 액세스 토큰]

LINEBOT 만들기



다음 파일을 만듭니다.
[폴더]
├ main.py     (실행할 프로그램)
├ Procfile     (프로그램 실행 방법)
├ requirements.txt  (설치할 라이브러리)
├ runtime.txt    (Python 버전)

main.py는 line-bot-sdk-python을 기반으로 만듭니다.

main.py
from flask import Flask, request, abort
import os

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

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():
    # 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"))
    app.run(host="0.0.0.0", port=port)

Procfile
# Procfile
web: python main.py

requirements.txt
Flask==0.12.2
line-bot-sdk==1.5.0

runtime.txt
python-3.6.6

Heroku에 배포



Heroku에 앱을 만들고 만든 파일을 배포합니다.
또한 LINE의 채널 비밀, 채널 액세스 토큰을 환경 변수로 설정합니다.

Heroku를 설치합니다.
brew tap heroku/brew && brew install heroku

Heroku에 로그인합니다.
heroku login

만든 파일이 있는 폴더로 이동하여 새 앱을 만듭니다.
heroku create アプリ名

만든 파일을 Heroku에 배포합니다.
git add .
git commit -m 'First commit'
git push heroku master

Line Developer에서 만든 채널의 채널 비밀, 채널 액세스 토큰을 Heroku 환경 변수로 설정합니다.
heroku config:add LINE_CHANNEL_ACCESS_TOKEN=チャネルアクセストークン --app googlecalendar-webhook
heroku config:add LINE_CHANNEL_SECRET=チャネルシークレット --app googlecalendar-webhook

WebHouck 설정



Line에서 메시지를 Heroku에서 수신할 수 있도록 WebHock을 구성합니다.
Line Developer 채널에서 WebHock 및 응답 메시지를 설정합니다.

メッセージを受け取った時に、WebHockを使用するように
[LINE公式アカウント機能]-[応答メッセージ]-[編集]から応答設定を変更します。

실행

メッセージを送信して同じメッセージが返されたら成功です。
メッセージが返ってこない場合

heroku logs --tail

で、Herokuのログでエラー等が出ているか確認すればいいです。

PUSH 메시지 전송

Herokuから直接Lineにメッセージを送ることができます。
PUSHメッセージはユーザIDを指定することで送信できます。

line_bot_api.push_message(
    ユーザID,
    TextSendMessage(text=メッセージ))

참고

Heroku에서 샘플 봇 만들기

line-bot-sdk-python

좋은 웹페이지 즐겨찾기