POST /users/verify/voice/preauth.json
Source
- 共用 preauth:
/Users/mattsu/Documents/Site/get-lancer-php56/app/Controller/UsersController.php:5834-6005。
- voice 一分鐘 guard:同檔
5900-5919。
- provider call:
/Users/mattsu/Documents/Site/get-lancer-php56/app/Model/PhoneVerification.php:48-57。
- New endpoint:
Endpoint/V1/Users.php:1125-1407,voice guard 1251-1262。
- New provider path:
Lib/Model/PhoneVerification.php:50-59。
- New route:
Lib/Common/RouterRule/Mapping.php:108-111。
與 phone/preauth 的差異
type=voice,使用 voice.verify_message template 與 SmsUtil::voice_otp()。
- 同一
user_id + msisdn 若最近一分鐘已有 status=0、error_code=voice delivery,回 error=9。
phone_deliveries.error_code 寫 voice;其餘 phone verification / request log 欄位分類沿用 phone_preauth.md。
is_force_voice=1 時,legacy phone/preauth 也會走 voice provider;不得因 routing key 是 phone 就省略此 config branch。
Config / tests
- 必要 config:
sms_platform_voice、Infobip / Twilio voice credentials、voice.verify_message、is_force_voice。
- legacy Twilio branch 透過
site.api_url + /new/v1/twilio/voice_otp_jwt 呼叫 new API;目前 new shared method 直接呼叫 Twilio。Infobip 路徑不受影響;若部署選 Twilio,需先完成 staging parity 實測再視為可上線。
- staging / production 實際值尚未確認;部署前必做。
- 2026-07-14 new 本地:
sms_platform_voice 未定義時 effective fallback infobip;voice template active,Infobip / Twilio credential constants 已定義但文件不記錄值。staging / production 實際部署值仍待確認。
- PHPUnit 已補一分鐘 duplicate、route 與 TW/HK/SG delivery MSISDN;provider success/fail、force voice 與 raw response parity 待 staging 實測。
- 這支不直接寫 payment、wallet、referral、activity 或 queue;成功 provider delivery 只寫
phone_verifications、phone_deliveries、phone_verification_logs 與 provider log。