파이썬으로 만드는 LineBot 만들기 절차

10788 단어 파이썬linebot

사전 쓰기



linebot의 작성 방법등은 많은 기사로 쓰여지고 있습니다만, 초보자의 나에게는 집착한 곳이 있었으므로 거기를 보충해, 자신에게 있어 알기 쉽게 만든 기사입니다.
자신을 위해 만든 기사이므로 이해하기 어려운 점이 많이 있습니다만, 다른 기사와 참조하면서 노력해 주세요.

전제 LineBot 작성





채널 시크릿 획득





채널 액세스 토큰 얻기



전제 Heroku 계정 생성 및 신용 등록



1, 터미널을 기동
2,
$mkdir lineBotTest

$cd lineBotTest

입력
3, 응용 프로그램에서 텍스트 편집을 시작
4, 상단 바에있는 형식을 선택하고 표준 텍스트를 선택하고 다음을 복사
'LINE_CHANNEL_SECRET' 등 변경할 필요 없음
그대로 copipe
import os
import sys
from argparse import ArgumentParser
from flask import Flask, request, abort
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

"""
heroku config:set LINE_CHANNEL_SECRET="チャネルシークレット" --app アプリ名
をターミナルに打ち込んだので以下のコードにチャンネルシークレットが毎回自動で入力される。
アクセストークンも同様なので変更する必要なし
"""
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)

"""
チャンネルシークレットやアクセストークンがnull(何もない)の場合の処理
"""
if channel_secret is None:
    print('Specify LINE_CHANNEL_SECRET as environment variable.')
    sys.exit(1)
if channel_access_token is None:
    print('Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.')
    sys.exit(1)

"""
Herokuの変数からトークンなどを取得
"""
line_bot_api = LineBotApi(channel_access_token)
handler = WebhookHandler(channel_secret)

"""
LINEからの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)

    # 署名を検証し、問題なければhandleに定義されている関数を呼び出す
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:#エラーが出た時400と返す
        abort(400)
    return 'OK'

"""
LINEでMassageEvent(テキストメッセージが送信された時)が起こった時呼び出される
line_bot_api.reply_messageの第一引数のevent.reply_tokenはイベントの応答に用いる
第二引数はlinebot.modelsに定義されている返信用のTextSendMessageオブジェクトを渡す
"""
@handler.add(MessageEvent, message=TextMessage)
def message_text(event):
    #入力された内容(event.message.text)に応じて返信
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text)
    )

if __name__ == "__main__":#正しいファイル拡張子で実行されているか識別
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

5, 이름을 main.py로 만듭니다. 또 저장 장소는 lineBotTest로 한다
이 시점에서

이렇게 되어 있어야 한다.

6, 터미널에서 lineBotTest user$로되어 있는지 확인하고 다음 명령을 입력하십시오.
$brew tap heroku/brew && brew install heroku

$heroku login
//q以外のボタンを押すとログイン開始

$heroku create アプリ名
//他者が作ったアプリ名と被らないユニークな名前を使用
//heroku create linetest0000 今回はlinetest0000を使用

$heroku addons:create fixie:tricycle --app linetest0000
//「Fixie」アドオンの追加

$pipenv install flask
$pipenv install line-bot-sdk
//フォルダ内に「Pipfile」と「Pipfile.lock」が生成されます。

/*
Webスクレイピングをする時は入力する
$pipenv install bs4
$pipenv install requests
*/

$heroku config:set LINE_CHANNEL_SECRET="チャネルシークレット" --app linetest0000
//最初に取得したチャンネルシークレットを入力する

$heroku config:set LINE_CHANNEL_ACCESS_TOKEN="アクセストークン(ロングターム)" --app linetest0000
//最初に取得したアクセストークンを入力する

$echo web: python main.py > Procfile
//Profile作成

$heroku git:remote --app linetest0000

$git init

$git add -A

$git commit -m "コメントを入力"

$git push heroku master


git add -A 이하의 커멘드는 코드를 변경했을 때, 반영시키기 위해서 치는 커멘드

webhook 설정


https://앱 이름.herokuapp.com/callback을 입력합니다.

주의



코드에서 import를 사용하면 Procfile에서
$pipenv install ライブラリ名 

입력
Procfile은 열고 입력하는 대신 명령으로 입력합시다.

움직이지 않을 때는
$heroku logs -t

에서 로그를 볼 수 있습니다.
대개 이것으로 어떻게든 된다.

이것으로 완성

좋은 웹페이지 즐겨찾기