在 LINE 裡拍名片和合照,AI 辨識名片文字後存進 Notion。架構沿用苗栗收容所系統(LINE 官方帳號 + LIFF + Make.com + Notion)。
整個流程不發任何 LINE 訊息,不佔官方帳號的訊息量。每張名片約用 Make 10~12 點。
| 部分 | 位置 | 說明 |
|---|---|---|
| LIFF 頁面 | liff/namecard/ |
index.html 版面、app.js 程式、mock.js 本機預覽用的模擬資料 |
| Make 情境「朕宏|名片」 | tools/make_blueprint.py 產生 make/名片.blueprint.json |
一個 webhook,欄位 a 分辨動作:submit、list、save。放在 Make 的「朕宏」資料夾、貼「朕宏」標籤(同一帳號還有「苗栗」專案) |
| Notion 資料庫「名片」 | 欄位名稱要和 make_blueprint.py 的 FIELDS 一字不差;建好後鎖定資料庫 |
|
| Google 雲端硬碟資料夾 | 存名片照片與合照;資料夾設成「知道連結的人都能檢視」,Notion 和頁面才看得到照片 |
| 動作 | 做什麼 | 回應 |
|---|---|---|
submit |
欄位 rid 請求編號、card 名片照片(JPEG base64)、photo 合照(可空白)、place 認識場合、note 備註。請求編號重複就不再寫 |
驗證身分後立刻回 {ok},之後才處理 |
list |
自己拍的名片,最多 100 筆,最新的在前 | {ok, cards:[{id, created_time, properties_value}]} |
save |
id 加上各欄位與 tags(逗號分隔);只能改自己拍的 |
{ok};403 not_yours |
身分:頁面送 LIFF 的 Access Token,Make 向 LINE 確認它屬於本系統的 LINE Login channel,再取得使用者編號。
tools/config.example.json 成 tools/config.local.json,填入 ID。python tools/make_blueprint.py 產生藍圖,匯入 Make(或請 Claude 用 Make 連接器建立)。liff/namecard/app.js 開頭 CONFIG 的 liffId、apiUrl 換成自己的,index.html 的 CSP connect-src 換成 webhook 的網域。liff/namecard/ 放上 GitHub Pages,網址填到 LIFF app 的 Endpoint URL。協會的官方帳號依身分顯示不同選單:
加好友 ──► 潛在會員 ──申請入會──► 審核中 ──核准──► 正式會員
(訪客選單) (訪客選單) (會員選單)
正式會員 ──停權──► 訪客選單
| 部分 | 位置 | 說明 |
|---|---|---|
| 會員頁面(LIFF) | liff/member/ |
依身分顯示:申請入會表單/審核中/會員資料與會員功能/停權。?v=about 是協會介紹。申請表上方可以「拍名片,自動填入」:Gemini 讀出姓名、手機、Email、公司、職稱填進表單(約一分鐘),申請人確認後才送出;照片不存檔 |
| 協會品牌 | assets/brand/ |
logo.png 橫式 Logo(頁面頂端)、mark.png 圓環標誌(選單、頁面圖示)、brand.json 名稱與介紹 |
| 選單圖片 | tools/make_member_richmenu.py 產生 assets/richmenu_guest.png、richmenu_member.png |
兩列六格(2500×1686)。上列兩張共用:近期活動|協會會員列表|AI 小幫手(目前是會員頁面的「即將推出」畫面)。下列:會員是名片掃描+兩格空位;訪客是一整格「申請加入」 |
| Make 情境 | tools/make_member_blueprint.py 產生三份藍圖 |
「朕宏|會員 API」「朕宏|會員:LINE 事件」「朕宏|會員:建立圖文選單(手動執行)」 |
| Notion | 「會員名冊」資料庫 | 「核准按鈕」「套用身分按鈕」兩個公式欄位是連結,點了就呼叫 Make |
換選單的規則集中在一個地方:核准、套用身分、打開會員頁面時的校正,最後都是「依 Notion 的身分,綁定或解除會員選單,再把『目前選單』寫回 Notion」。打開會員頁面時發現兩邊對不上,會自動校正(苗栗踩過舊選單卡住的問題)。
管理者的操作(都在 Notion 會員名冊):
核准連結裡有一組密鑰(config.local.json 的 member.approve_key,也寫在 Notion 公式裡),沒有密鑰的請求會被擋下。要換密鑰時兩邊一起改。
換 Logo 或協會介紹:覆蓋 assets/brand/ 裡的檔案(檔名不變)→ 推上 GitHub,頁面就會更新。選單圖片要再執行 python tools/make_member_richmenu.py、推上 GitHub,到 Make 手動執行「朕宏|會員:建立圖文選單(手動執行)」;它會清掉舊選單,並把所有正式會員重新綁到新的會員選單。
名片限會員使用:設定了 member 時,名片情境會先查會員名冊,不是正式會員就回 not_allowed(每次多 1 點)。
python -m http.server 5191 --directory liff/namecard
打開 http://localhost:5191 會用 mock.js 的模擬資料,不連 LINE 和 Make。?v=review 直接打開待確認分頁。
HTTP_DEFAULTS),否則請求不會送出。thinkingConfig: {thinkingLevel: "low"}:預設思考量讀一張名片要 180~220 秒,超過 Make webhook 的 180 秒上限就會失敗;low 約 50 秒、讀得一樣完整。minimal 這個模型不支援。selected 的說明是「Set the Rich Menu by Default」:建好就會變成所有人的預設選單。建立多張選單時,「設為預設選單」一定要放在全部建完之後(2026-10-21 會員選單因此蓋過訪客選單,所有好友都看到會員選單)。