Osprey

自己的簡訊閘道

訊息從天上
掉下來,接住。

Osprey · 魚鷹

幾支便宜的 Android 手機,加上一台自己的伺服器, 就是完整的簡訊收發系統。驗證碼自動抓出來,客戶回覆進統一收件匣, 通話從後台遙控。不租別人的閘道,資料不出你家。

運作方式

一則訊息走過的路

沒有黑箱。每一段都在你自己的機器上,每一步都留下稽核記錄。

驗證碼

公用機收到的碼,
不用再有人去翻手機。

每一則進來的簡訊都會被讀過一次。是驗證碼就抓出來、標上來源, 在後台一點就複製;腳本也可以直接呼叫 API 拿走並標記為已用, 不會有兩個人搶同一組碼。

Google · 09:47

G-812449 is your Google verification code.

812449

規則抽取 · 信心 1.0 · 已轉發 webhook

做不到什麼

先講不能做的,
能做的才有人信。

這幾條不是還沒做,是做不到。系統整個架構就是繞著它們設計的。

不能在瀏覽器裡講電話

Android 10 之後,一般 App 拿不到通話語音。後台能撥號、接聽、掛斷、開擴音, 但聲音在手機上——人要在手機旁邊,或幫手機接一支藍牙耳機。

不能拿消費門號群發行銷

電信商的用戶約款禁止,短時間大量外發會被停用門號。行銷請走官方簡訊商, 通道介面已經留好了。這套系統適合的是需要收回覆的一對一訊息。

上不了 Google Play

簡訊與通話記錄權限只開放給預設簡訊 App。這支只能側載安裝, 所以內建了用一行指令佈建整批手機的方式。

手機本身有發送速率上限

Android 系統內建每 30 分鐘 30 則的限制,超過會跳出使用者確認框卡住自動化。 可以調,但每個廠牌的實際上限不一樣,裝機時要實測。

規格

數字

項目說明
裝置3–5 台建議起步規模,二手機即可
單機吞吐60–100 則/小時受 Android 系統限制,需實測
中文簡訊70 字/則UCS-2,超過就分段計費
驗證碼抽取< 1 ms規則命中時完全不碰模型
意圖分類約 5 秒本地模型,背景執行不擋收發
資料全在自家機器模型也跑在內網,個資不出門

開始使用

三行指令

伺服器同時吐出 API 與後台,一個網址就是整套系統。 手機端不用打字,一行 adb 指令就佈建完成。

# 伺服器
$ osprey init-db && osprey create-user admin
$ uvicorn osprey.main:app --host 0.0.0.0 --port 8080
 
# 手機(註冊碼從後台「裝置」頁拿)
$ adb shell am start -n com.osprey.sms/.ui.MainActivity \
    --es server "https://your-host" --es code "XXXXXXXX"