SMS 與 Voice 設定來源

目的

整理簡訊、語音電話、SMS provider 切換與相關錯誤排查。

這份文件只記 key 名稱與用途,不記 secret 值。

pro360_api_82

主要來源:

Lib/Common/Configuration.php
docker/staging/Configuration.php

常見 key:

群組常見 key 名稱
Every8dEVERY8D_*
InfoBipInfoBip*
Twiliotwilio_*
NexmoNexmo_*
SMS provider 選擇sms_platform_local, sms_platform_other, sms_infobip_rate

SMS provider 切換

新專案一般簡訊入口:

Lib/Util/SmsUtil.php::send()

主要切換 key:

sms_platform_local
sms_platform_other
sms_infobip_rate

目前程式邏輯:

條件設定來源預設值說明
本國手機sms_platform_localinfobipPhoneUtilFactory::get(ProConfig::get('area'))->isLocalPhone() 為 true 時使用
美國 +1寫死走 Nexmonexmo不看 sms_platform_other
其他國碼sms_platform_othernexmo非本國且非 +1 時使用
Every8d 內灰度轉 InfoBipsms_infobip_rate0只有已進 sendWithEvery8d() 時才會依比例改走 InfoBip

sendWith() 支援的平台值:

infobip
twilio
nexmo
nexmo_tw
every8d

常見切換方式:

情境建議設定說明
Every8d 異常,例如 send SMS to Every8d fail-102sms_platform_local = infobip讓本國手機直接走 InfoBip,不進 Every8d
已有流程仍直接進 Every8d,但要暫時轉送 InfoBipsms_infobip_rate = 100只對 sendWithEvery8d() 生效,可作為臨時 fallback
國外簡訊異常檢查 sms_platform_other非本國、非 +1 手機才會吃這個設定
美國簡訊異常查 Nexmo key / callback / log+1 目前寫死走 Nexmo,改 sms_platform_other 不會影響

排查順序

  1. 先看 application log channel SmsUtil / InfoBip,確認錯誤發生在哪個 provider。
  2. 確認實際執行環境載入的 Configuration.php,不要只看本機檔案。
  3. sms_platform_local / sms_platform_other 目前值。
  4. 若錯誤來自 Every8d,優先切 sms_platform_local = infobip;若仍有程式直接呼叫 sendWithEvery8d(),再評估 sms_infobip_rate = 100
  5. 重跑失敗 notification 時,若事件已進 event_queue_wait,依 event_queueevent_queue_wait 重跑流程處理。

注意

  • 切換 provider 是設定變更,不是 load balancer path 切換。
  • sms_infobip_rate 不是全域 SMS provider;它只在 Every8d path 內作比例轉送。
  • 不要把 provider key 值貼進文件或 ticket,只記 key 名稱與錯誤代碼。

相關文件