send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."Today at 2:14 PM
Hey Ada — your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered四种发送者类型,一套 API。
号码是 Bird SMS API 的基础。用你已经在使用的同一客户端搜索可用性、购买号码,并将入站路由到一个 webhook。你选择哪种类型取决于用量、地域,以及你能承担多少注册工作。
我应该使用哪种发送者?
吞吐量、覆盖范围和注册工作量因发送者类型而异。大多数美国应用流量从 10DLC 长码起步;大批量一对多项目会转向短码。
| 发送者类型 | 最适合 | 注册 |
|---|---|---|
| 长码(10DLC) | 中等用量下的双向对话、OTP、提醒 | A2P 10DLC 品牌 + 活动 |
| 短码 | 大批量一对多营销和提醒 | 运营商审核,前置周期以周计 |
| 免费电话号码 | 无需 10DLC 的美国/加拿大流量,吞吐量高于长码 | 免费电话号码验证 |
| 字母数字发送者 ID | 在国家/地区允许的地方进行单向品牌提醒 | 许多国家/地区需要预注册 |
选择一种号码类型
深入了解每种发送者类型——覆盖范围、吞吐量,以及注册所需的条件。
几次调用即可搜索、购买并路由。
按国家/地区和能力查找号码、购买它,并将其入站流量指向一个 webhook——全部使用你发送所用的同一 SDK。一旦所需的任何注册通过,号码即刻生效。
provision.ts
201 · purchased
const { data: available } = await bird.numbers.search({
country: "US",
type: "long-code",
capabilities: ["sms"],
}).safe();
const { data: number } = await bird.numbers.buy({
number: available[0].number,
webhook: "https://example.com/webhooks/bird",
}).safe();
console.log(number.id); // → "num_8KQ2..."SMS 号码常见问题
我应该从哪种号码类型开始?+
对于美国应用流量,10DLC 长码可覆盖大多数双向和 OTP 用例。大批量一对多项目会转向短码;免费电话号码则是面向美国/加拿大、无需 10DLC 的一种选择。
让一个号码生效需要多长时间?+
长码或免费电话号码可立即获得,并在其注册或验证通过后即可开始发送。短码需要运营商审核,通常需要数周。
一个号码可以同时发送和接收吗?+
可以。长码、短码和免费电话号码都是双向的:将号码的入站流量指向一个 webhook,回复就会以签名事件形式送达。字母数字发送者 ID 仅支持单向。
发送前我需要注册吗?+
这取决于发送者类型和国家/地区。美国应用流量需要 A2P 10DLC,免费电话号码需要验证,许多国家/地区要求发送者 ID 预注册——全部从控制台处理。