1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API Lab for LINE WORKSAdvent Calendar 2024

Day 7

LINE WORKS Bot Callback サーバーを Google Colab + Cloudflare Tunnel で構築する

Last updated at Posted at 2024-12-06

LINE WORKS Bot Callback サーバーを Google Colab + Cloudflare Tunnel で構築する

LINE WORKS Bot の Callback サーバーを簡単にセットアップする方法を解説します。この方法では、Google Colab と Cloudflare Tunnel を使用して、素早く外部からアクセス可能な環境を構築します。

以下の URL で Google Colab ノートブックを試せます。
Google Colab ノートブック: LW_Bot_Callback_CloudflareTunnel.ipynb

必要な準備

  1. LINE WORKS Developer Console での設定

    • Bot を作成し、Callback URL を登録します。Colab 実行後に生成される Cloudflare トンネルの URL を設定してください。
  2. Google Colab のアクセス

    • Google アカウントで Colab にアクセスします。
  3. Python 環境の準備

    • 必要なライブラリとツールはノートブック内で自動的にセットアップされます。

スクリプト

以下のスクリプトは、Callback サーバーを Google Colab 上に構築し、Cloudflare Tunnel を使用して外部アクセス可能にします。

# 必要なライブラリのインストール(既にインストール済みならスキップされます)
!pip install requests flask

# Cloudflareトンネルツールをダウンロード、設定(既にダウンロード済みならスキップ)
!wget -N https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x cloudflared-linux-amd64

from flask import Flask, request, jsonify
import threading

# Flask アプリケーションの初期化
app = Flask(__name__)

@app.route('/', methods=['POST'])
def callback():
    # Callback のリクエスト内容を取得
    event = request.json
    print("受信したイベント:", event)

    # 必要に応じて非同期で処理
    if event.get('type') == 'message':
        print("メッセージ内容:", event.get('content', {}).get('text'))

    return jsonify({'status': 'ok'}), 200

# サーバーを起動する関数
def run():
    app.run(host='0.0.0.0', port=5000)

# Flask サーバーを別スレッドで実行
thread = threading.Thread(target=run)
thread.start()

# Cloudflareトンネルを起動し、外部アクセス用の URL を取得
!./cloudflared-linux-amd64 tunnel --url http://127.0.0.1:5000 &

スクリプトのポイント

1. 必要なパッケージのインストール

Google Colab 環境で必要な requestsflask を自動的にインストールします。

2. Flask サーバーの構築

Flask を使用して Callback を処理するサーバーを構築します。/ エンドポイントに POST リクエストを受信すると、イベントデータを取得し、コンソールに出力します。

3. Cloudflare Tunnel の活用

Cloudflare Tunnel を使用してローカルサーバーを外部アクセス可能にします。実行後、Cloudflare が提供する URL が生成されます。


実行結果

成功時のログ

 * Running on http://127.0.0.1:5000
 * Running on http://172.28.0.12:5000
2024-12-04T11:34:48Z INF Your quick Tunnel has been created!
2024-12-04T11:34:48Z INF Visit it at: https://inclusive-pc-path-dale.trycloudflare.com

この URL を Bot の Callback URL に設定してください。

注意点

  • トンネルの有効期限:
    Cloudflare トンネルの URL は一時的です。Colab セッションが終了するとトンネルも無効になります。

  • 署名検証:
    実運用では、LINE WORKS から送られるリクエストの署名を検証してください。

まとめ

この方法を使えば、LINE WORKS Bot の Callback サーバーを簡単にセットアップできます。開発・テスト環境に最適です。本番環境では、安定したホスティングサービスの利用を検討してください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?