欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > [Python]如何利用Flask搭建一個Web服務器,並透過Ngrok訪問來實現LINE Bot功能?

[Python]如何利用Flask搭建一個Web服務器,並透過Ngrok訪問來實現LINE Bot功能?

2025/4/1 17:15:45 来源:https://blog.csdn.net/weixin_42008031/article/details/146638594  浏览:    关键词:[Python]如何利用Flask搭建一個Web服務器,並透過Ngrok訪問來實現LINE Bot功能?

AI ChatBot I How to Build AI LINE Bot with Ollama, Flask and Ngrok?

Flask 是一個輕量級的Web框架,主要用於建立基於Python的Web應用和API。它可搭建webhook本地服務器,同時提供靈活的URL路由和HTTP請求處理方式,允許開發者快速啟動並測試應用功能。由於其結構簡單,開發者常用其作為建立和測試 MVP(最小可行性產品),同時其也非常適合新手作為入門學習Web開發的工具之一。

本文利用樹莓派4B搭建Flask和Ngrok來實現簡易的LINE Bot功能,其中Ngrok的安裝和建置可參考此篇文章,本篇主要著重在Flask環境建置和程式碼的部分。

Flask環境建置:

a.為了避免版本干擾,建置python venv虛擬環境

raspberry@raspberry-desktop:~/python-venv$ python -m venv ngrok_linebot_env raspberry@raspberry-desktop:~/python-venv$ source ngrok_linebot_env/bin/active

b.在該虛擬環境中,安裝flask和line-bot-sdk

(ngrok_linebot_env) raspberry@raspberry-desktop:~/python-venv$ pip install flask line-bot-sdk

程式碼:

該程式碼範例主要是讓LINE Bot回應與請求相同的內容,相當於是一隻學人說話的鸚鵡。

from flask import Flask, request, abort
from linebot.v3 import (WebhookHandler
)
from linebot.v3.exceptions import (InvalidSignatureError
)
from linebot.v3.messaging import (Configuration,ApiClient,MessagingApi,ReplyMessageRequest,TextMessage
)
from linebot.v3.webhooks import (MessageEvent,TextMessageContent
)
app = Flask(__name__)#Channel Access Token 和 Channel Secret
configuration = Configuration(access_token='your Channel Access Token')
handler = WebhookHandler('your Channel Secret')#根路徑 "/" (用於檢測flask server是否有順利運作)
@app.route("/")
def index():return "Hello, Flask is running!"#LINE Bot的Webhook回調路由
@app.route("/callback", methods=['POST'])
def callback():#X-Line-Signature headers infosignature = request.headers['X-Line-Signature']#請求資料body = request.get_data(as_text=True)app.logger.info("Request body: " + body)#驗證簽名並處理Webhook請求try:handler.handle(body, signature)except InvalidSignatureError:app.logger.info("Invalid signature. Please check your channel access 
token/channel secret.")abort(400)return 'OK'#訊息處理function
@handler.add(MessageEvent, message=TextMessageContent)
def handle_message(event):#利用ApiClient建立與LINE Messaging API的串接with ApiClient(configuration) as api_client:line_bot_api = MessagingApi(api_client)#創建MessagingApi實例#ReplyMessageRequest,用於發送回覆訊息reply_message_request = ReplyMessageRequest(reply_token=event.reply_token,          messages=[TextMessage(text=event.message.text)]  #將接收到的訊息作為回覆訊息)#利用MessagingApi的reply_message_with_http_info方法發送回覆訊息line_bot_api.reply_message_with_http_info(reply_message_request)if __name__ == "__main__":app.run(port=5000) #port=5000, 須與ngork的port=5000一致

若想讓使用者透過LINE與AI模型進行問答,可考慮與OpenAI的API進行串接,若是考量問答數據有隱私或商業機密,則可考慮搭建本地AI服務器並與之串接,如Ollama。本文封面視頻即是利用Flask和Ollama串接的LINE Bot測試效果。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词