ngrokローカル構築回線ロボットテスト環境


こんにちは!
今回のリリースでは、ワイヤレス通信機のローカルテスト環境を構築する方法について説明します.
同じコード/ブランチが必要で、異なるサーバのみが必要な場合は、Line ChartロボットとHerokuで例を示します.
大きなストリームは次のとおりです.
1.ngrok,dotvnvをインストールする
2.Line Developerコンソールでそれぞれ本室用の微信ロボットとテスト用の微信ロボットを作成し、コインを配布する
3.Herokuなどの配置プラットフォームに環境変数を登録する
4.コードの修正
5.運転

1.ngrok、dotvnvのインストール


次のリンクからngrokをダウンロードしてインストールします.
ngrokインストール
dotnvもインストールされます.
$ pip install python-dotenv

2.微信ロボットを作成し、コインを発行する


線路ロボットの作成については、詳細な説明を省略します.申請や審査が必要なKakaoTalkとは異なり、会員加入するだけで簡単にロボットを生成できますので、詳細は正式な書類を参照してください.
herokuコールバックurlを登録するための2つのネイティブ微信ロボットとngrokローカルコールバックurlをテストするための2つの微信ロボットを作成します.線路はこれらのロボットを「通路」と呼ぶ.

各チャンネルを作成したら、以下の内容を記録してください.
  • アクセストークン
  • チャネルキー
  • 3.herokuに環境変数を登録する


    記録されたトークンには、本放送チャンネルのトークンをherokuに登録する.
    アプリケーションの設定に簡単に登録できます.

    4.コードの修正


    まずルートフォルダにあります.envファイルを作成します.
    
    // .env
    
    # LINE ACCOUNT INFO
    LINE_CHANNEL_ACCESS_TOKEN = YOUR_CHANNEL_ACCESS_TOKEN
    LINE_CHANNEL_SECRET = YOUR_CHANNEL_SECRET
    
    # ngrok용 포트번호 설정
    PORT=9000
    次は微信ロボットのappですpyコードを変更します.
    コードの例はフォーマルハブライブラリから来ている.
    
    # app.py
    
    import os # 여기 추가 
    from dotenv import load_dotenv # 여기 추가
    from flask import Flask, request, abort
    
    from linebot import (
        LineBotApi, WebhookHandler
    )
    from linebot.exceptions import (
        InvalidSignatureError
    )
    from linebot.models import (
        MessageEvent, TextMessage, TextSendMessage,
    )
    
    # .env에서 읽어들이기
    # heroku에서는 자동으로 heroku에 등록되어있는 환경변수를 읽어들입니다.
    load_dotenv()
    
    channel_access_token = os.getenv("LINE_CHANNEL_ACCESS_TOKEN")
    channel_secret = os.getenv("LINE_CHANNEL_SECRET")
    
    app = Flask(__name__)
    
    line_bot_api = LineBotApi(channel_access_token)
    handler = WebhookHandler(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:
            print("Invalid signature. Please check your channel access token/channel secret.")
            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)
    

    5.運転


    準備が完了したら、次の手順で実行します.
    1. app.pyの実行
    2.次のコマンドを使用してngrokを実行します.
    $ ngrok http 9000
  • ngrokを実行すると、端末は次の画面を表示します.

  • ここでForwardingというurlをコピーし、Line Developerコンソールにテスト微信ロボットのコールバックurlを登録します.コールバックurlなのでurlの後ろに/callbackを付けなければなりません.
    https://veryLongYourNgrokURL.ngrok.io/callback

    注意点

  • ngrokには2時間の時間制限があります.登録すると時間制限がなくなるそうです.
  • ngrokは運転するたびにurlを変更するため、テスト用の微信ロボットのurlを変更する必要があります.△生放送チャンネルはHerokuとは関係ない.