Setiap pesan yang dikirim seseorang ke nomor yang Anda provisikan datang sebagai webhook bertanda HMAC. Baca text-nya, balas dari nomor yang sama, dan biarkan Bird menangani STOP dan HELP untuk Anda. Bangun alur percakapan dan auto-reply pada API yang sudah Anda gunakan untuk mengirim.
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.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Today at 2:14 PM
Inbound hanyalah webhook lainnya.
Two-way adalah bagian dari Bird SMS API. Ketika seseorang mengirim pesan ke nomor Anda, Anda mendapatkan event sms.received di endpoint bertanda tangan dan terlindungi dari replay yang sama, yang sudah membawa tanda terima pengiriman Anda. Tidak ada integrasi kedua dan tidak ada polling: verifikasi tanda tangan sekali, lalu arahkan berdasarkan tipenya.
Dengarkan apa yang kembali.
Pesan inbound dan opt-out adalah event, sama seperti delivery receipt. Verifikasi satu tanda tangan, branch pada type, dan tangani masing-masing di handler yang sudah Anda tulis.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "sms.received":
await handleInbound(event.data.from, event.data.text);
break;
case "sms.opted_out":
await removeFromCampaigns(event.data.from);
break;
}
return new Response(null, { status: 204 });
}Payload-nya adalah amplop yang sama di setiap channel Bird: sebuah id evt_, tanda tangan HMAC, dan timestamp yang terlindungi replay.
sms.receivedPesan masuk mendarat di nomor Anda: berisi pengirim, nomor Anda, dan teks pesan.sms.deliveredBalasan yang Anda kirim mencapai handset (DLR operator).sms.opted_outPengirim mengirim STOP: Bird menekan mereka dan memblokir pengiriman selanjutnya.
Pesan inbound bertanda tangan, secara lengkap.
Berikut tampilan sebuah event sms.received di jalur. from adalah siapa pun yang mengirim teks kepada Anda, to adalah nomor yang Anda provisikan, dan segment serta encoding dilaporkan dengan cara yang sama seperti pada pengiriman, sehingga balasan inbound yang panjang tidak pernah mengejutkan.
{
"id": "evt_7nQ9xLp2aR...",
"type": "sms.received",
"created_at": "2026-06-26T14:03:11Z",
"data": {
"id": "sms_5hV02Mr3n...",
"from": "+15005550006",
"to": "+14155550172",
"text": "YES book me in for Thursday",
"encoding": "GSM-7",
"segments": 1
}
}Balas dari nomor yang sama.
Sebuah balasan adalah pengiriman dengan from dan to ditukar. Setel from ke nomor Anda dan to ke pengirim asli, dan percakapan tetap pada satu nomor, sehingga penerima melihat sebuah thread alih-alih pengirim baru setiap kali. Bangun auto-reply, konfirmasi, atau alur percakapan lengkap di atasnya.
async function handleInbound(from: string, text: string) {
if (/^yes\b/i.test(text)) {
const { error } = await bird.sms.send({
from: "+14155550172", // your two-way number
to: from, // reply to the sender
text: "Booked. See you Thursday at 10am.",
category: "transactional",
}).safe();
if (error) throw error;
}
}STOP, HELP, dan START kami tangani untuk Anda.
Bird mengenali kata kunci khusus sebelum mencapai handler Anda: STOP menambahkan pengirim ke daftar penekanan Anda dan memicu sms.opted_out, HELP mengirim balasan bantuan otomatis, dan START membuat mereka berlangganan kembali. Pengiriman berikutnya ke nomor yang ditekan diblokir otomatis. Anda tetap bisa memakai kata kunci sendiri untuk YES, BOOK, atau apa pun yang dibutuhkan alur Anda. Aturan lengkap kata kunci dan opt-out ada di penanganan opt-out.
Dua hal yang akan Anda inginkan berikutnya.
Pesan masuk memerlukan nomor yang mendukung two-way: long code, short code, dan toll-free dapat menerima, sedangkan alphanumeric sender ID tidak bisa. Untuk percakapan bolak-balik yang lebih kaya di perangkat yang sama (indikator mengetik, tanda terima baca, carousel), RCS meningkatkan percakapan jika perangkat mendukungnya.
Pelajari lebih dalam di dokumentasi.
Pasang webhook untuk event inbound, baca referensi error untuk kegagalan yang akan Anda tangani, dan periksa penyalahgunaan dan kepatuhan untuk aturan keyword dan consent.
FAQ SMS dua arah
Bagaimana SMS inbound mencapai aplikasi saya?
Bisakah saya membalas pesan inbound?
Apa yang terjadi saat seseorang mengirim teks STOP?
Apakah saya perlu nomor khusus untuk dua arah?
Sisanya dari platform SMS
Satu API, satu set key. Jelajahi kemampuan lainnya.
Kirim dan terima pada satu nomor, satu API.
Inbound dua arah adalah salah satu kemampuan Bird SMS API: pengiriman, nomor, kepatuhan, routing, dan analitik hadir bersamanya, di atas infrastruktur yang telah kami jalankan selama satu dekade.