TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

Twilio簡訊整合指南:分清新版試用與legacy Console,核對台灣SMS限制、中文分段費用及Verify通道費,並用Node.js範例追蹤Message SID與錯誤,說明WhatsApp Sandbox和正式上線差異。
用 AI 摘要這篇文章:
Twilio是讓程式發送簡訊、語音與WhatsApp的通訊平台。開始整合前,先確認試用限制、目的地規則與費用;取得訊息SID後,還要追蹤狀態才能判斷傳送結果。
Twilio把簡訊、語音與WhatsApp等通訊能力提供給程式呼叫。產品不必自己建置電信交換設備,但仍要處理收件人同意、帳號權限、目的地規則和失敗通知。VoIP語音通訊是其中一種應用,不能拿來代表整個通訊平台。
訂單通知可先看Programmable Messaging;登入驗證碼則要比較Verify,因為發出一串數字之外,還要檢查使用者輸入的驗證碼。若希望用畫面串接流程,Twilio Studio提供視覺化編輯器,因此Twilio並非只有API、完全沒有圖形介面。
選通道先看客戶實際使用什麼。WhatsApp可以處理對話,但不能憑全球用戶數就判定你的客戶會使用;只有通知需求,也不必同時導入客戶資料平台或客服中心。這篇從一條訊息的試用、發送到查狀態說起。
2026年9月9日的Twilio試用文件列出:試用期30天,分別提供100則SMS、100則WhatsApp、3,000封Email及75分鐘語音等產品用量,不是共用15至20美元餘額。實際剩餘用量可在Console的Free units tracker查看。文件同時保留legacy Console的舊流程,不能把不同帳號介面的條件混用。

新版試用限制包含:SMS和語音限註冊電話號碼所屬國家、最多5個已驗證收件號碼,以及使用Twilio提供的預設內容;不能直接換成自己的訊息本文。試用電話號碼也可能依產品或收件人不同,並非每個帳號都得到同一支可自由選用的號碼。
Twilio的台灣SMS指南明列不支援雙向SMS。因此,發到+886的訂單通知,不應設計成「回覆1確認收件」後期待Twilio收到回覆。要互動,可改規劃其他支援的通道;若簡訊需要附網址,還必須先確認網址允許條件。
依該指南,訊息開頭應帶公司、組織、品牌或活動名稱,並依頁面提供的流程登記品牌。網址尤其短網址受限制,完整網址需聯繫Twilio登記/加入允許名單;WhatsApp與LINE聊天連結也列為不允許。Sender ID可能被電信路由改寫,不要把程式裡的from值當成收件人一定會看到的名稱。
這些是Twilio對該路由的公開要求,不等於所有法規義務的完整清單。Twilio Messaging Policy也要求適當同意與退出機制;不能因為只發SMS,就認為任何內容都能主動傳送。台灣指南列的行銷禁發時段為12:30–13:30及21:00至次日09:00,排程前應一併檢查,並確認排程器的時區設定。
電話格式使用E.164,例如示意號碼0912-345-678轉成+886912345678;範例號碼不是可供測試的收件人,執行時請換成你控制並已獲准使用的號碼。
下面是依Twilio認證文件整理的Node.js示範,適用已允許自訂訊息、具備合適發送者與目的地權限的帳號。它不是新版免費試用的通用捷徑。本文沒有對外發送簡訊;本機語法檢查也不能證明你的帳號或路由可用。
在Node.js專案安裝npm install twilio,將程式存成send-sms.cjs。於執行環境設定下列變數:TWILIO_ACCOUNT_SID、TWILIO_API_KEY、TWILIO_API_SECRET、TWILIO_FROM、TWILIO_TO、TWILIO_MESSAGE_BODY。最後一項填入符合目的地規則的訊息,發送前先確認品牌與網址條件。
API key SID和secret用來認證;Account SID指定帳號。官方建議應用程式使用API keys,以便獨立撤銷。金鑰要留在後端的環境設定或安全儲存機制,不能放進網頁JavaScript、公開儲存庫或分享的截圖。環境變數檔若含密鑰,也不能提交到Git。
const twilio = require('twilio');
const required = [
'TWILIO_ACCOUNT_SID', 'TWILIO_API_KEY', 'TWILIO_API_SECRET',
'TWILIO_FROM', 'TWILIO_TO', 'TWILIO_MESSAGE_BODY'
];
for (const name of required) {
if (!process.env[name]) throw new Error(`Missing environment variable: ${name}`);
}
const client = twilio(
process.env.TWILIO_API_KEY,
process.env.TWILIO_API_SECRET,
{ accountSid: process.env.TWILIO_ACCOUNT_SID }
);
async function main() {
const message = await client.messages.create({
body: process.env.TWILIO_MESSAGE_BODY,
from: process.env.TWILIO_FROM,
to: process.env.TWILIO_TO
});
console.log({ sid: message.sid, status: message.status });
}
main().catch(error => {
console.error({ status: error.status, code: error.code });
process.exitCode = 1;
});
確認變數與收件人後,執行node send-sms.cjs會嘗試發送一次訊息,可能產生費用。回傳SID表示已建立訊息資源,不表示簡訊已到手機。請用同一個SID在Console訊息紀錄查看狀態,或依傳送狀態文件設定StatusCallback接收後續變化。
| 看到的結果 | 可以判斷什麼 | 下一步 |
|---|---|---|
| 有SID,狀態為accepted或queued | 訊息已建立或排入處理 | 保留SID並查後續狀態,不直接標記客戶已收到 |
| sent | 已交給後續傳送環節 | 繼續查送達回報;不能當作客戶已閱讀 |
| delivered | 已收到該路由可提供的送達回報 | 確認回報層級;台灣指南只列SMSC回報 |
| failed或undelivered | 處理或傳送遇到失敗 | 查看error_code與官方錯誤說明,修正原因後才考慮重試 |
台灣指南只支援SMSC送達回報,也就是簡訊中心層級的回報,不能等同手機已顯示、使用者已讀。第一次驗證流程時,應同時核對收件手機與SID紀錄;正式產品若需要使用者確認,另設確認動作,別只靠delivered更新重要業務狀態。
收取Webhook時,HTTPS保護傳輸仍不夠。依Twilio安全文件使用SDK驗證X-Twilio-Signature,以實際請求URL與參數進行核對,再處理事件;不要只因端點回200就認為來源可信。WordPress網站安全措施可以保護網站其他部分,但不能取代Twilio簽章驗證。
若通知串接在WordPress,先用WordPress測試環境檢查觸發條件,確保同一筆訂單不會因重複事件發出多則通知。測試站也可能連到真實Twilio帳號,必須使用受控收件人與測試設定,不能把測試站當作不會發訊的保證。
截至2026年9月9日,Twilio台灣SMS價格頁列國際號碼發送US$0.0842/段。這不是每封任意長度簡訊的總價,也不能套到所有亞洲國家。頁面另提醒可能有電信商附加費,終止於Failed狀態的訊息另列US$0.001處理費;請依實際產品、路由與帳單確認費用。

中文簡訊通常會使用UCS-2。依Twilio字元與分段文件,單段上限70個字元;需要串接時通常每段67個字元,因為要留重組資訊。純GSM-7則常見為單段160、串接每段153。表情符號及特殊字元也會影響計數,不要把「中文字數」直接當成全部計費單位,應用Console紀錄或官方分段計算器核對完整訊息。
例如只含一般中文字的71字訊息,按每段67字計算為2段;若適用上述台灣單價,純發送費示意為2×US$0.0842=US$0.1684,尚未計入其他適用費用。實際發送時,品牌名稱、標點與網址都會增加長度,不能只算主要通知文字。
| 用途 | 主要計費基礎 | 不能漏掉的條件 |
|---|---|---|
| 發送台灣SMS | 本次頁面列US$0.0842/段 | 段數、適用附加費與Failed處理費;不是跨國通用價 |
| Verify驗證 | US$0.05/成功驗證+通道費 | SMS、WhatsApp等通道分開計費;失敗傳送也不能直接推定完全免費 |
| WhatsApp訊息 | Twilio US$0.005/則,收發皆計 | 另加適用的Meta範本訊息費,依類型、目的地與服務視窗判斷 |
| 電話號碼等持續資源 | 依號碼類型及方案 | 即使當月沒有發訊,也可能仍有月租;不能將隨用隨付寫成全服務無月費 |
Verify價格頁的US$0.05是每次成功驗證的基本費,另加通道費,不是發一次SMS就包到底。自建驗證碼則要自行處理到期、重試、濫用和驗證結果;無法只憑每天幾百或幾千次就判斷哪個一定划算。需要Verify時,流程是建立Service、發起Verification,再提交Verification Check;不要以「已傳送驗證碼」代替驗證通過。
比較其他供應商時,請拿同一個目的地、訊息內容、段數、月量、發送者類型與送達需求詢價。把美國SMS起價拿來比較台灣通知,或把WhatsApp處理費當成全部成本,都會讓預算失真。
Twilio WhatsApp Sandbox文件指出:Sandbox只在legacy Console提供,新版試用Console應使用Try out WhatsApp。Sandbox使用共享號碼,只能發給已加入你這個Sandbox的使用者;加入狀態3天後到期,需要重新加入。它用於功能測試,不適合正式服務或負載測試。
Sandbox不是永久免費通道:文件列標準WhatsApp計價,試用帳號另有100則WhatsApp用量。Sandbox發送頻率上限為每3秒1則;商家主動訊息限預先核准的範本,不可自行新增範本。未加入的收件人會遇到63015錯誤。
客戶主動傳來WhatsApp訊息後,會開啟24小時客服視窗,期間可回覆自由格式訊息;視窗外則需用核准範本。依Twilio WhatsApp價格頁,Twilio每則收/發訊息處理費為US$0.005;Meta的範本費另外計算。客服視窗內utility範本及自由格式訊息免Meta費,行銷與驗證範本仍可能收費,不能說「24小時內全部免費」。
要正式上線,依WhatsApp Self Sign-up文件準備已升級的Twilio帳號、Meta Business Portfolio管理權限與符合要求的電話號碼,再完成WABA與發送者登記,依流程處理企業驗證及範本。通過Sandbox測試,不等於正式發送者、範本與全部目的地都已可用。
如果只是想知道Twilio能否用在產品,先用Console預設流程測試你控制的收件人,再確認實際目的地限制與預估總價。要開始寫程式,才進到後端金鑰、發送與狀態處理;不要跳過前置條件,直接把範例貼到正式網站。
第一條流程完成的標準應包含:發送內容與目的地合規、SID可追蹤、收件端結果已核對、失敗能停止或排查,以及實際段數與費用可說明。這比只印出一個SID,更接近產品真正需要的通知功能。