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=0error_code=voice delivery,回 error=9
  • phone_deliveries.error_codevoice;其餘 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_messageis_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_verificationsphone_deliveriesphone_verification_logs 與 provider log。