這是一個使用 FastAPI、Firebase Realtime Database 以及 Gemini Pro API 打造的 LINE Bot 應用程式。這個機器人可以接收並處理文字與圖片訊息,從名片圖片中解析出聯絡人資訊,並將其儲存到 Firebase 中方便管理與查詢。


- 智慧名片辨識:傳送名片圖片,Bot 會使用 Gemini Pro Vision API 自動解析圖片中的姓名、職稱、公司、電話、Email 等資訊,並轉換成結構化資料。
- Firebase 資料庫整合:所有名片資料都會安全地儲存在您的 Firebase Realtime Database 中,方便隨時存取。
- 互動式資料管理:
- 新增/修改記事:為每張名片添加備忘錄。
- 即時編輯:如果 AI 辨識有誤,可直接在 LINE 中點擊按鈕修改錯誤的欄位。
- 關鍵字查詢:輸入關鍵字(如公司或姓名)即可快速找到相關名片。
- 簡易指令互動:
list
:列出資料庫中所有的名片。remove
:清除重複的名片資料。test
:產生一張測試用的名片,方便您預覽卡片樣式。
本專案已容器化,推薦使用 Google Cloud Run 進行部署,它能提供 Serverless 的彈性與自動擴展能力。
-
打包成 Docker Image: 在您的開發環境中,確保已安裝 Docker。於專案根目錄下,執行以下指令將應用程式打包成一個 Docker image:
# {PROJECT_ID} 是您的 GCP 專案 ID # {IMAGE_NAME} 是您為這個映像檔取的名稱 (例如:linebot-namecard) gcloud builds submit --tag gcr.io/{PROJECT_ID}/{IMAGE_NAME}
這個指令會使用 GCP Cloud Build 自動打包並將映像檔推送到 Artifact Registry。
-
部署到 Cloud Run: 映像檔準備好後,執行以下指令將其部署到 Cloud Run:
gcloud run deploy {IMAGE_NAME} \ --image gcr.io/{PROJECT_ID}/{IMAGE_NAME} \ --platform managed \ --region asia-east1 \ --allow-unauthenticated \ --set-env-vars "ChannelSecret=YOUR_CHANNEL_SECRET,ChannelAccessToken=YOUR_CHANNEL_ACCESS_TOKEN,GEMINI_API_KEY=YOUR_GEMINI_API_KEY,FIREBASE_URL=YOUR_FIREBASE_URL,GOOGLE_APPLICATION_CREDENTIALS_JSON=YOUR_FIREBASE_SERVICE_ACCOUNT_JSON"
部署成功後,GCP 會提供一個服務網址 (Service URL),這就是您的 LINE Bot Webhook URL。
在部署時,您需要設定以下幾個環境變數,這是讓 Bot 正常運作的關鍵:
ChannelSecret
:[必要] LINE Channel 的 Channel secret。您可以在 LINE Developers Console 中找到。ChannelAccessToken
:[必要] LINE Channel 的 Channel access token。同樣在 LINE Developers Console 中取得。GEMINI_API_KEY
:[必要] 您的 Google Gemini API 金鑰。您可以從 Google AI Studio 取得。FIREBASE_URL
:[必要] 您的 Firebase Realtime Database 網址。格式通常是https://{your-project-id}-default-rtdb.firebaseio.com/
。GOOGLE_APPLICATION_CREDENTIALS_JSON
:[必要] Firebase 服務帳戶的金鑰 (JSON 格式)。- 前往您的 Firebase 專案設定 ->
服務帳戶
。 - 點擊「產生新的私密金鑰」並下載 JSON 檔案。
- 請將整個 JSON 檔案的內容複製成一個單行的字串,並在部署指令中貼上。這是因為 Cloud Run 的環境變數不支援直接上傳檔案。
- 前往您的 Firebase 專案設定 ->
本專案採用 MIT License 授權。詳細資訊請參考 LICENSE
檔案。
非常歡迎您為這個專案做出貢獻!如果您有任何改善建議或發現 Bug,請隨時提出 Issue 或發送 Pull Request。
- Fork 本專案。
- 建立您的分支 (
git checkout -b feature/AmazingFeature
)。 - 提交您的變更 (
git commit -m 'Add some AmazingFeature'
)。 - 將分支推送到遠端 (
git push origin feature/AmazingFeature
)。 - 開啟一個 Pull Request。