
- 8依縣市平行查詢的 TDX 端點
- 2.5 km搜尋半徑
- 5每次回覆的結果卡片
- 10 次/分每個 IP 的 webhook 限流
問題
找車位時,常要在地圖 App、停車場 App 與政府資料之間來回切換,才能拼湊出「附近哪裡有位子、多少錢、怎麼去」。停車神隊友把這件事收進 LINE:傳一個位置,就拿到排好序的答案。
使用流程
1. 選模式
輸入「停車場」或「停車格」,Bot 會記住你要查的是哪一種。
2. 給位置
點快速回覆分享目前位置,或直接輸入地址、地標。
3. 拿答案
收到最近 5 個結果的卡片:名稱、地址、剩餘車位、收費說明、開車距離與時間,點一下就開啟 Google 地圖導航。
架構
關鍵設計決策
依縣市平行查詢、容錯合併
先用反向地理編碼判斷縣市,再用 Promise.allSettled 平行呼叫該縣市的 TDX 端點(停車場、設施、即時車位、費率;路邊則是路段、即時車位、費率、收費時段),任一端點失敗不影響其他結果。
多來源去重
TDX 與 Google Places 的結果合併後,座標相差約 20 公尺內視為同一處;只保留 2.5 公里內並依距離排序。
Token 快取
TDX 使用 OAuth client credentials,存取權杖快取到到期前 60 秒,不必每次查詢都重新換發。
保護 API 額度
webhook 每個 IP 每分鐘最多 10 次。每次查詢約 3 次 TDX 呼叫與 5 個 Distance Matrix elements,以 Google 免費額度估算可支撐每日上千名使用者。
降級而不是失敗
TDX 沒有資料時改用臺北市開放資料補上停車場清單;每次回覆都附純文字摘要,沒有卡片也能讀到結果。