API 呼叫唔係成個系統
發一個 A2P SMS 只係一個 HTTP request。但營運 A2P SMS,係管理一堆你控制唔到嘅依賴:每個市場嘅發送方註冊、供應商路由、營運商過濾、手機狀態,同埋訊息真正要服務嘅應用流程。
呢篇文講嘅係決定訊息有冇用嘅嗰啲部分,同埋令佢哋保持可見嘅日常操作習慣。
發送方註冊係市場依 賴,唔係一個設定
好多市場要求發送方身分先註冊,先會當流量係合法。美國嘅長碼 A2P 流量要透過 The Campaign Registry(10DLC)註冊;品牌同活動細節,包括申報嘅用途,會影響流量嘅處理方式。喺唔少歐洲同中東市場,字母數字發送方 ID 要按營運商預先註冊,每個營運商同供應商要求嘅證明文件都唔一樣。
操作上嘅後果(而唔係任何具體時間表):
- 更換發送方身分係依賴第三方嘅事,應該放喺項目計劃入面,唔係放喺 release checklist。要向負責嗰個市場嘅供應商同營運商確認現時嘅前置時間,因為佢會變。
- 加多一個供應商做 failover,通常意味住要重新走一次呢個供應商連接嘅註冊流程,唔止係加憑證咁簡單。
- 喺部分市場,內容同範本規則掛勾住已註冊嘅身分,所以範本改動可能要重新審批。
按市場保留一份發送方身分登記冊,記錄註冊狀態、持有嘅供應商同用過嘅證明文件。當路由要喺壓力下更改嗰陣,呢份登記冊決定咗係一次路由改動,定係一次由頭摸索。
隔離流量類別
驗證碼、服務通知同推廣活動有唔同嘅時限、唔同嘅同意要求、唔同嘅內容審查。共用一個發送方身分同一條路由,即係一個活動嘅排隊行為同內容審查都會影響到你嘅驗證流量。
要喺四個層面分開:
- 發送方身分同註冊,令一個類別嘅內容審查唔會影響另一個。
- 路由,令吞吐分配同供應商限速互相獨立。
- 隊列同優先次序,令排程活動唔會排喺用戶正等緊嘅驗證碼前面。
- 監測基線同告警,令一個緩慢嘅活動唔會 page 到同一個負責驗證路由嘅人。
相關細節見事務性同營銷流量。
將 DLR 同錯誤對應返自己一套詞彙
供應商用自己嘅格式同缺口去報告狀態同錯誤資訊。送達回執講嘅係網絡報告咗咩,唔係收件人做咗咩,中間節點仲可能改寫或者自行合成呢啲回執。
呢個對應工作做一次就夠:
- 一套標準狀態——已接受、已提交、已送達、失敗、過期、未知——保留供應商原始狀態同錯誤碼喺旁邊。
- 一套標準失敗原因,按邊個可以採取行動分組:你嘅應用程式、供應商、目的地網絡,定係收件人。
- 記錄低邊條路由嘅邊啲狀態你唔信,咁分析先唔會被靜靜噉扭曲。
冇呢個對應,換或者加供應商改變嘅只係你嘅報表,唔係你嘅可靠度。
按路由、按目的地、按類別去監測
整體送達百分比會隱藏值得處理嘅失敗,因為失敗通常好specific:某個目的地網絡、某條路由、某個流量類別、某個發送方身分。
有用嘅監測要有:
- 按項目同路由建立嘅基線,由該項目自己最近嘅歷史建立,而唔係一個通用目標。
- 延遲分佈,而唔係平均值,由提交到最終狀態。
- 即時金絲雀——喺每條重要路由同市場,持續向你控制嘅號碼發送一小串真實訊息——令劣化可以獨立於生產流量模式被偵測到。
- 針對項目自己基線嘅偏移而設嘅告警,有指定負責人同明確行動。
重試、幂等性同時限
訊息入面最難處理嘅個案係一次含糊嘅提交:request 逾時,訊息喺下游可能存在,亦可能唔存在。
- 每次發送都要有應用程式生成嘅參考編號,喺提交之前就存低。將提交當成對呢個參考編號幂等,如果供應商支援幂等 key 就用埋佢。
- 為每個流量類別定義一個有用嘅時限:過咗呢一點,送達已經幫唔到用戶。過咗就停,唔好再重試。
- 永遠唔容許重試或者 failover 為同一個 session 建立第二個驗證碼。要喺狀態層面去重,唔係喺訊息層面。
- 按類別決定:含糊逾時之後重試,值唔值得冒重複嘅風險。呢個係政策決定,唔係預設行為。
度量應用程式層面嘅結果
送達回執描述嘅係傳輸層。結果活喺你嘅應用程式入面:用戶有冇驗證、有冇撳、有冇回覆、有冇畀錢、有冇取貨。用一個識別碼由決定發送一直帶到每次嘗試同狀態,兩邊都要存低。
呢個連結先令路由比較有意思。兩條報告送達差不多嘅路由,驗證率可以完全唔同,只有應用程式呢邊先睇得出嚟。度量模型見能揭示送達同驗證失敗嘅 OTP 指標。
供應係同營運分開嘅決定
Flowstates 銷售同營運訊息路由,支援客戶保留自己嘅供應商合約(BYOV),亦支援兩者混合。呢個係商業選擇。營運層——註冊、路由、標準狀態對應、監測、升級同報表——無論邊個持有供應合約,都係同一份工作,而且無論邊種模式都需要有人負責。
操作清單
- 按市場建立發送方身分登記冊,記錄註冊狀態、持有人同證明文件。
- 流量類別喺發送方身分、路由、隊列優先次序同告警上分開。
- 標準狀態同錯誤對應,保留供應商原始代碼。
- 按路由、目的地、類別建立嘅基線,來自每個項目自己嘅歷史。
- 喺重要路由同市場設即時金絲雀。
- 每次發送都有應用程式生成嘅參考編號,喺提交前存低。
- 按流量類別設定有用時限,用停止條件代替無限重試。
- 喺重試同 failover 之間,喺狀態層面去重。
- 一個關聯識別碼貫穿發送、狀態同應用程式結果。
- 每個告警都有指定負責人同明確行動,路由變更路徑唔靠單一個人。